【问题标题】:OAuth 2.0 Code Grant flowOAuth 2.0 代码授权流程
【发布时间】: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 中已经存在的代码。
【问题讨论】:
标签:
asp.net-mvc
oauth
oauth-2.0
dotnetopenauth
【解决方案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
}