0

私はAzure ADでADALv3で作業しています。私のASP.NET MVCアプリケーション(およびXamarinアプリケーション)は、さまざまなAzure ADユーザー間の切り替えをサポートします。私は下図のように、ユーザーの切り替えをサポートするためのAzure ADを設定するにはどうすればよいGmailと同様に、ユーザーIDの切り替えをサポートするようにADALv3を設定するにはどうすればよいですか?

enter image description here

+0

このシナリオについてはまだ問題がありますか?助けてくれたら教えてください。 –

+0

@ FeiXue-MSFTチェックインしていただきありがとうございます。私はあなたの答えを何度も読んでおり、 'context.ProtocolMessage.Parameters.Add'の効果とこれを達成するためにどのようにクッキーを使うべきかを確かめていません。実際には、多くのMSALアカウントやADALアカウントだけでなく、第三者アカウントも選択します。 – LamonteCristo

答えて

3

そのような機能がADALで提供していないがあり、我々は自分自身を実装する必要があります。

たとえば、MVCでこの目標を達成するために、ログインのユーザー名をCookieに保存できます。次に、パラメータlogin_hint=userNameを指定してユーザーを切り替えることができます。

public void SignIn(string userName) 
{   
    HttpContext.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = "/" }, OpenIdConnectAuthenticationDefaults.AuthenticationType); 
} 

そして、我々は、カスタムを経由してOpenIdConnectAuthenticationNotificationsRedirectToIdentityProviderlogin_hintパラメータを追加することができます:

app.UseOpenIdConnectAuthentication(
    new OpenIdConnectAuthenticationOptions 
    { 
     ClientId = clientId, 
     Authority = authority, 
     PostLogoutRedirectUri = postLogoutRedirectUri, 
     RedirectUri = postLogoutRedirectUri, 
     Notifications = new OpenIdConnectAuthenticationNotifications 
     { 

      RedirectToIdentityProvider=context=> 
      { 

       var userName = context.Request.Query.Get("userName"); 
       context.ProtocolMessage.Parameters.Add("login_hint", userName); 
       return Task.FromResult(0); 
      } 
     },  
    }); 

とビューで我々は関係なく、ユーザーがサインイン以下のようにしているSignIn方法を変更しないする必要がありますユーザーを切り替えるためのUIを提供する必要があります。デモの簡単な例は次のとおりです。コードを変更して、ユーザーのユーザー名をクッキーから取得します。

関連する問題