bug*_*ker 3 asp.net oauth owin katana
我试图找出如何将clientID(或我可能需要的任何其他数据)放在承载/访问令牌中.
我正在使用OWIN OAuth来创建令牌.我可以向身份凭证添加声明,然后将其标记/序列化到令牌中并传递回客户端.
然后,客户端调用受保护的API,并且API对令牌进行反序列化,并为用户设置IPrinciple.此标识对象包含用户名和ClaimsIdentity中的范围.
我想获得其他信息,例如首先发出获取令牌请求的clientID.
我可以把这些数据放在索赔中; 这显然有效,但它是一个黑客.
我已经做了很多搜索,我不确定如果可能的话,如何在承载/访问令牌中存储额外的数据.
提前致谢!
您可以将其存储在AuthenticationProperties对象中,如下面的代码所示:
var props = new AuthenticationProperties(new Dictionary<string, string>
{
{
"as:client_id", (context.ClientId == null) ? string.Empty : context.ClientId
},
{
"userName", context.UserName
}
});
var ticket = new AuthenticationTicket(identity, props);
Run Code Online (Sandbox Code Playgroud)
要读取它,您需要取消保护令牌,如下面的代码,然后从故障单中读取属性.我没有找到直接的方法来创建令牌而不传递令牌,我知道这不是最终的答案,但它可能有所帮助.
string token = "TOKEN GOES HERE";
Microsoft.Owin.Security.AuthenticationTicket ticket = Startup.OAuthBearerOptions.AccessTokenFormat.Unprotect(token);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1774 次 |
| 最近记录: |