Joh*_*n C 10 owin asp.net-web-api2 bearer-token asp.net-identity-2
我有两个站点,一个用户登录并管理他们的帐户的站点和没有UI的站点,它只不过是一个存储和检索内容的API.这两个站点都使用相同的Owin ASP.Net Identity 2.0设置.由于显而易见的原因,UI站点使用cookie,API站点使用Bearer令牌.我需要能够使用当前用户身份验证从UI站点调用API方法/ URL.简而言之,我需要在UI站点中生成有效的Bearer令牌,以便在进行Rest API调用时添加到HTTP头.
我正在寻找一些方法来使用"可信"的客户端身份验证并调用API的/ Token url来生成Bearer令牌,或者因为两个站点共享相同的代码而用户表调用Owin方法来生成Bearer Token in我可以传递给API标头的UI网站代码,API网站将其视为有效标记.
如果您需要更多信息,请告诉我.
更新:请使用oAuth隐式流程以正确的方式查看下面的更新答案.
Joh*_*n C 13
我最终找到了这篇文章,并按照其示例代码创建了我们自己的OAuth授权服务器.有了它,我们可以代表用户使用我们的UI站点和OAuth服务器之间共享的可信客户端ID和秘密来请求用户令牌.
http://www.asp.net/aspnet/overview/owin-and-katana/owin-oauth-20-authorization-server
更新1:在完成功能和事情的更多工作之后,我偶然发现了创建令牌的内容.Owin中有一个TicketDataFormat类可以完成所有的魔法.它在构造函数中接受一个参数,这是一个IDataProtector.如果Owin资源服务器在其中间件选项中使用默认的AccessTokenFormat(TicketDataFormat); 与默认的DataProtector一起,您可以在客户端复制令牌生成.顺便说一句,默认的DataProtector使用MachineKey,因此您的两个可信站点必须在web.config中设置相同的MachineKey.所有不受信任或部分受信任的站点都应使用上面链接中提到的标准oAuth流.
var protector = app.CreateDataProtector(typeof(OAuthAuthorizationServerMiddleware).Namespace, "Access_Token", "v1");
var tdf = new TicketDataFormat(protector);
var ticket = new AuthenticationTicket(){ ... };
var accessToken = tdf.Protect(ticket);
Run Code Online (Sandbox Code Playgroud)
更新2:推荐的,实际上唯一的方法是使用oAuth与客户端一起使用Implicit流,并设置正确的范围和响应类型.
该IdentityServer3文档都非常有据可查的是让我们起来,在很短的时间运行教程.特别是在" 入门:MVC身份验证和Web API"教程中代表"用户"部分调用API.
| 归档时间: |
|
| 查看次数: |
14345 次 |
| 最近记录: |