Dee*_*101 8 asp.net authentication oauth asp.net-web-api owin
我们有OWIN OAuth 2.0工作(感谢这篇精彩的文章),但需要更深入地了解在HTTP响应中转换ClaimsIdentity
为实际access_token
字符串的实际过程.
我们正在ClaimsIdentity
OAuth授权提供商中创建此方法:
public class SimpleAuthorizationServerProvider : OAuthAuthorizationServerProvider
{
// <snip>
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
// validation, user checking code here
var identity = new ClaimsIdentity(context.Options.AuthenticationType);
identity.AddClaim(new Claim("sub", context.UserName));
identity.AddClaim(new Claim("role", "user"));
context.Validated(identity);
}
}
Run Code Online (Sandbox Code Playgroud)
当我们将HTTP POST请求作为grant_type=password&username=user007&password=jamesbond
(放松,密码在这里没问题)时,我们得到了HTTP POST响应主体
{"access_token":"9K8VtOBseU0-XZfdGe2_urn2HESY3jLkpgvowOQFPXsHeWNOrTlTVzfPu35ZEvr4AqSj_b0laesBegtVWuR8R-aItnNXw4vXiuCg0cTNMUKP_yfi89VhD446o2X6ffL8upwZVILpomweSweIVlDmwUDzIwf1ZqubrQ8vuiQDFu-_7vpjPwJ5yVvomQ75agsJWMZk-H_bVWSObds82aM8LCRJwb2bUJchr6_L1GP8xdXqRQz24uDhHvco-XByyMSMzZm-Qo0VVBbocbgP64OJulbihVG_W9e8G69UfbX99pIYiLyE4jixiUtjOKSiMYBISW3_fg","token_type":"bearer","expires_in":1799,"as:client_id":"","userName":"user007",".issued":"Fri, 31 Oct 2014 16:02:05 GMT",".expires":"Fri, 31 Oct 2014 16:32:05 GMT"}
问题:创建实际access_token
字符串的逻辑是什么?
问题中的一些具体问题
access_token
字符串的内部结构是什么?谢谢
Tai*_*deh 13
很高兴我的帖子很有用,请找到如下答案:
1 - 这个"神奇的"字符串是加密或签名的字符串(可怜的MSDN文档,说明加密或签名不明确),其中包含已登录用户的所有声明和票证属性的反序列化版本.如果在IIS模式下,加密/签名是通过machineKey节点(文档)中的"decryptionKey"和"validationKey"键值完成的.如果作为独立的OWIN应用程序运行,则加密使用旧版DPAPI来保护它,并且实际上使用过时的3DES算法(文档).它的默认实现在这里的源代码中.
2 - 在第1点回答.
3 - 检查我的新帖子,其中显示了如何发出签名的Json Web令牌而不是默认访问令牌.
希望这能回答你的问题.
归档时间: |
|
查看次数: |
3328 次 |
最近记录: |