2017-02-02 16 views
0

WSO2内のOpenID Connectサービスプロバイダを使用してカスタムWebアプリケーションからユーザーを認証しようとしています。私はthis articleの答えに続き、Thinketecture.IdentityModel.ClientというNugetパッケージを追加しました。私のコードは、リンク先の記事に非常によく似ていますWSO2暗黙のフローが返されないid_token

var client = new OAuth2Client(new Uri(serviceProviderAuthorizeUrl)); 

     var url = client.CreateImplicitFlowUrl(
      clientId, 
      redirectUri: redirectUrl, 
      scope: scope, 
      nonce: Guid.NewGuid().ToString()); 

     Response.Redirect(url); 

URLがために出てくる:https://{wso2_url}/oauth2/authorize?client_id={my_client_id}&response_type=token&scope=openid&redirect_uri=https%3A%2F%2F{mydomain}%2F{my_app}%2FCallback.aspx&nonce=f0db4eac-18df-46f6-92f1-c28ba621596d

今は、この作業を行い、access_tokenはを返します:https://{my_domain}/{my_app}/Callback.aspx#token_type=Bearer&expires_in=970&access_token=067e3366217798986912326a86abd92f

私の問題は、私がいないということですユーザーのアイデアさらに、このWSO2 articleは、私がresponse_type:id_tokenを渡すと、レスポンスをデコードして、 "sub"属性を使ってユーザーが誰かを知ることができるはずだが、id_tokenレスポンスを取得していないことを示しています。上記のコードでは、代わりにtokenのresponse_typeを持つurlを作成しています。単にresponse_typeを変更するとエラーになります。 WSO2で暗黙のフローを使用してid_token応答を取得するにはどうすればよいですか?

これは、WSO2の設定のためにこれに続いてarticleでした。私は現在ImplicitとClient Credentialをチェックしています。

答えて

0

これらはクエリパラメータとして指定してください。

response_type=id_token 
client_id=xxxxx 
redirect_uri=http://xx.com/xx/x 
nonce=xxxx 
scope=openid 
+0

CreateImplicitFlowUrlはresponse_typeのパラメータを取りません。私はまたこれを試みた: 'var url = serviceProviderAuthorizeUrl +"?response_type = "+ HttpUtility.UrlEncode +"&client_id "+ HttpUtility.UrlEncode(clientId)+ "&redirect_uri = "+ HttpUtility.UrlEncode(redirectUrl)+" &nonce = "+ HttpUtility.UrlEncode(Guid.NewGuid()。ToString())+"&scope = "+ HttpUtility.UrlEncode(scope); Response.Redirect(url); 'とresponse_typeとしてid_tokenが渡され、WSO2からエラーが発生しました。私はそれが簡単だと思うが、そうではない。 –

関連する問題