无法从授权码

时间:2017-04-30 16:11:06

标签: .net model-view-controller oauth-2.0 owin

我目前正在学习.Net的OAuth2服务器,似乎OWIN提供了一个很好的解决方法来轻松实现这种服务器。

我尝试过Microsoft示例:https://docs.microsoft.com/en-us/aspnet/aspnet/overview/owin-and-katana/owin-oauth-20-authorization-server

似乎示例效果很好,但是当我尝试通过PostMan交换访问令牌的授权代码时失败了。

我在请求正文中使用了带有标题Content-Type=application/x-www-form-urlencoded的POST方法和以下参数:

grant_type=authorization_code
client_id=7890ab
redirect_uri=http%3A%2F%2Flocalhost%3A50150%2Fcallback%2F
code=d7a91a351ffa4764a22ef3628c94d495443e0043bfc9405b9f1c5113a234a23d
client_secret=7890ab

我通过调试器进行跟踪,发现进程传递了事件ReceiveAuthenticationCode,并且票证应该已经结算/反序列化。

但无论我怎么试,结果总是无效的。

我查看了原始样本,我发现它成功获得了使用WebServerClient的访问令牌。但由于我的目的是提供不限于.Net客户端的服务,所以我必须确保我可以在没有库的情况下检索令牌。

有没有人有任何建议?

更新1

我已经连接了clientID& clientSecret到7890ab:7890ab并将字符串编码为base 64 string Nzg5MGFiOjc4OTBhYg==,然后附加到标题Authorization=Basic Nzg5MGFiOjc4OTBhYg==,后者没有改变任何内容

1 个答案:

答案 0 :(得分:0)

经过两周的尝试,我发现基本部分我错了,我希望能保存下面的程序员'遇到这个问题的时间;

当使用Authorization Code HTTP GET方法时,redirect_uri的值应该被编码(例如http%3A%2F%2Flocalhost%3A50150%2Fcallback%2F

但是,在代码获得并按Access Token HTTP POST方法进行交易后,请求正文redirect_uri的值不应如果要编码,则值应为http://localhost:50150/callback/,这是导致invalid_grand返回的部分。

  

注意:redirect_uri的值在请求之间应该相同,这意味着如果uri在http://中占优势,或在请求/时以Authorization Code结尾},当要求Access Token

时,这些部分也应该出现      

参考:我认为以下演示比MSDN更清晰https://github.com/yuezhongxin/OAuth2.Demo