2017-08-28 2 views
2

私のアプリケーションは、このようにOpenIDのを使用して認証:asp.netコアのopenidアクセストークンからクレームを取得するにはどうすればよいですか?

  services.AddAuthentication(o => 
       { 
        o.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme; 
        o.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme; 
        o.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme; 
       }) 
       .AddCookie() 
       .AddOpenIdConnect(o => 
       { 
        o.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme; 
        o.Scope.Add("openid"); 
        o.Scope.Add("permissions"); 
        o.Authority = "https://localhost:44305"; 
        o.ClientId = "MyTestClient"; 
        o.ClientSecret = "MyTestClientSecret"; 
        o.ResponseType = OpenIdConnectResponseType.IdTokenToken; 
       }); 

私は認証後にユーザーオブジェクトをチェックすると、それが唯一のIDトークンからのクレームではなく、アクセストークンを持っています。アクセストークンからクレームを取得するにはどうすればよいですか?

+0

私はまったく同じ問題を抱えていますが、解決策を見つけましたか?ありがとう –

+0

@MatthewChristianson nope :( –

+0

私は私のために働いた答えを追加しました。私はOpenIdからaccess_tokenを得ることはできませんでした –

答えて

0

私はあなたがAddOpenIdConnect()からOnAuthorizationCodeReceivedイベントを傍受する必要があると信じています。そこからctx.ProtocolMessage.Codeにアクセスする必要があります.Ctx.ProtocolMessage.CodeはAcquireTokenByAuthorizationCodeAsync()で使用されるAuthorizationCodeで、それ以上のトークンを生成します。また、コードが生成されるように、ResponseTypeを "code id_token"に設定する必要があります。これに関する良いチュートリアルはhttps://joonasw.net/view/aspnet-core-2-azure-ad-authenticatioです。これがうまくいきたいです

関連する問題