RND*_*hts 12 asp.net oauth-2.0 asp.net-web-api openid-connect
我花了最近几天阅读有关OAuth2和OpenIDConnect的所有规范,并使用Thinktecture Identity Server实现测试客户端.我也遵循了几个复数课程,我认为理解它的主要要点.但是我仍然对响应类型非常困惑.
OpenIDConnect规范指定混合流响应类型是"code","id_token"和"token"的组合.我理解"id_token"允许我们最初访问基本的id信息.
我也理解代码"是指授权代码,而"令牌"是指访问令牌,并将"代码"与其他两个触发器中的一个或两个相结合,但我的理解是你交换了访问令牌的授权代码授权流程,而隐式流程隐式提供访问代码?
有人能解决我的困惑吗?
Han*_* Z. 17
您所做的以下陈述是正确的:
code 是指授权码token是指访问令牌或(access_token)code用于切换access_token但是你的一部分困惑可能源于术语混淆:
正如@juanifioren所指出的,Hybrid流程结合了以下内容:
code id_token流程会得到一个code与id_token直接在认证响应,但你会用code得到一个access_token来自令牌端点code token流程会得到一个code与access_token直接在认证响应,但你会用code得到一个id_token和另一个可能access_token从令牌端点后端code id_token token流程会得到一个code,access_token以及id_token在认证响应直接和您可以使用code在后端得到另一个 access_token来自令牌端点access_token从令牌端点获取一个与从授权端点获取一个端口不同,因为机密客户端将自己验证到令牌端点(而不是授权端点).因此,access_token对于客户机密部分可能具有更多权限和更长寿命.
另请参阅规范邮件列表中有关此主题的简短帖子:http://lists.openid.net/pipermail/openid-specs-ab/Week-of-Mon-20150209/005229.html
要了解响应类型和授权类型之间的可能关系,请参阅IdentityServer4\Constants.cs
public static readonly Dictionary<string, string> ResponseTypeToGrantTypeMapping = new Dictionary<string, string>
{
{ OidcConstants.ResponseTypes.Code, GrantType.AuthorizationCode },
{ OidcConstants.ResponseTypes.Token, GrantType.Implicit },
{ OidcConstants.ResponseTypes.IdToken, GrantType.Implicit },
{ OidcConstants.ResponseTypes.IdTokenToken, GrantType.Implicit },
{ OidcConstants.ResponseTypes.CodeIdToken, GrantType.Hybrid },
{ OidcConstants.ResponseTypes.CodeToken, GrantType.Hybrid },
{ OidcConstants.ResponseTypes.CodeIdTokenToken, GrantType.Hybrid }
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8943 次 |
| 最近记录: |