私はAzure ADでADALv3で作業しています。私のASP.NET MVCアプリケーション(およびXamarinアプリケーション)は、さまざまなAzure ADユーザー間の切り替えをサポートします。私は下図のように、ユーザーの切り替えをサポートするためのAzure ADを設定するにはどうすればよいGmailと同様に、ユーザーIDの切り替えをサポートするようにADALv3を設定するにはどうすればよいですか?
:
私はAzure ADでADALv3で作業しています。私のASP.NET MVCアプリケーション(およびXamarinアプリケーション)は、さまざまなAzure ADユーザー間の切り替えをサポートします。私は下図のように、ユーザーの切り替えをサポートするためのAzure ADを設定するにはどうすればよいGmailと同様に、ユーザーIDの切り替えをサポートするようにADALv3を設定するにはどうすればよいですか?
:
そのような機能がADALで提供していないがあり、我々は自分自身を実装する必要があります。
たとえば、MVCでこの目標を達成するために、ログインのユーザー名をCookieに保存できます。次に、パラメータlogin_hint=userName
を指定してユーザーを切り替えることができます。
public void SignIn(string userName)
{
HttpContext.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = "/" }, OpenIdConnectAuthenticationDefaults.AuthenticationType);
}
そして、我々は、カスタムを経由してOpenIdConnectAuthenticationNotifications
のRedirectToIdentityProvider
をlogin_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を提供する必要があります。デモの簡単な例は次のとおりです。コードを変更して、ユーザーのユーザー名をクッキーから取得します。
このシナリオについてはまだ問題がありますか?助けてくれたら教えてください。 –
@ FeiXue-MSFTチェックインしていただきありがとうございます。私はあなたの答えを何度も読んでおり、 'context.ProtocolMessage.Parameters.Add'の効果とこれを達成するためにどのようにクッキーを使うべきかを確かめていません。実際には、多くのMSALアカウントやADALアカウントだけでなく、第三者アカウントも選択します。 – LamonteCristo