2017-04-30 6 views
0

私は現在、.NetのOAuth2サーバーを学習しており、OWINがこの種のサーバーを簡単に実現するための素晴らしい回避策を提供しているようです。認証コードからアクセストークンを交換できません

私は、Microsoftの例を試してみました:サンプルは素晴らしい作品のようhttps://docs.microsoft.com/en-us/aspnet/aspnet/overview/owin-and-katana/owin-oauth-20-authorization-server

はようだが、私は郵便配達を経由してアクセストークンのための認証コードを交換しようとしていたとき、それが失敗しました。

私は、ヘッダーContent-Type=application/x-www-form-urlencodedとリクエストボディで、次のparamsでPOSTメソッドを使用する:私は、デバッガをトレース

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

とプロセス渡されたイベントReceiveAuthenticationCodeを発見し、チケットが/非直列化を定住されている必要があります。

どのように試しても、結果は常にinvalid_grantでした。


私はそれが成功WebServerClientでアクセストークンを獲得することが分かっ元のサンプルに見てきました。しかし、私の目的は.Netクライアントに限らずサービスを提供することなので、ライブラリなしでトークンを取得できるようにする必要があります。

誰にも提案はありますか?


私は64列Nzg5MGFiOjc4OTBhYg==をベースに7890ab:7890abにクライアントID & clientSecretを接続し、文字列を符号化された1

更新は、次にしようとの2週間後、何

答えて

0

を変更しないAuthorization=Basic Nzg5MGFiOjc4OTBhYg==ヘッダに追加します私は基本的な部分で私が間違っていたことを発見しました。この問題に遭遇した私の次のプログラマーの時間を節約することを願っています。 Authorization CodeHTTP GETによる方法のために行く場合、redirect_uriの値が符号化されるべきである

(例えばhttp%3A%2F%2Flocalhost%3A50150%2Fcallback%2F

ただし、コードは、利得と、HTTP POST方法によりAccess Tokenためredirect_uriの値を取引しようとしている後リクエスト本体の中でをエンコードしないでください。値はhttp://localhost:50150/callback/である必要があります。これがinvalid_grandを返す部分です。

redirect_uriの値は、要求間で同じでなければならない、Authorization Codeを求める際にURIがリードしている場合http://と意味又は/で終了し、これらの部品はまた、本Access Token

を求めなければなりません

参考:私の意見では、次のデモはMSDNよりもはっきりしています。https://github.com/yuezhongxin/OAuth2.Demo

関連する問題