OAuth 2.0 代码授权流程
Posted
技术标签:
【中文标题】OAuth 2.0 代码授权流程【英文标题】:OAuth 2.0 Code Grant flow 【发布时间】:2016-10-15 06:06:00 【问题描述】:每个授权类型都有一个 OAuth 2.0 授权服务器的 sample implementation 和示例工作流。
IETF 有一个针对 Code Grant Flow 的 OAuth 2.0 规范。 当您查看 IETF 代码授权流程图表中的步骤“D”和“E”时,它们似乎没有在示例实现中实现(第一个链接)。
示例实现中的步骤 D 和 E 在哪里? 我知道这是一个尚未准备好生产的示例实现,但我认为它将遵循 OAuth 2.0 的规范。
在示例应用程序中,客户端获取代码,但不会将其转发到 OAuth 服务器以获取令牌。 实际上,它获取的令牌包括步骤 3 中已经存在的代码。
【问题讨论】:
【参考方案1】:好的,我下载了Microsoft.Owin的源码并通过代码调试。
DotnetOAuth 客户端库在后台发送令牌请求。 我在使用 Fiddler 时看不到它,因为它使用 WebRequest 对象,因此不会被 Fiddler ootb 捕获!
令牌请求包含代码令牌并且它也得到验证
它将在
中得到验证ReceiveAuthenticationToken 事件处理程序。
代码令牌在此处创建:
private void CreateAuthenticationToken(AuthenticationTokenCreateContext ctx)
var code = Guid.NewGuid().ToString("n") + Guid.NewGuid().ToString("n");
ctx.SetToken(code);
_authenticationCodes[ctx.Token] = ctx.SerializeTicket(); <-- stored in a concurrentDictionary as the key for the auth ticket, for demonstration purposes only
// delete the entry, must only be used once
【讨论】:
以上是关于OAuth 2.0 代码授权流程的主要内容,如果未能解决你的问题,请参考以下文章