Es gibt keine solche Funktion durch die ADAL bieten, müssen wir uns implementieren.
Um beispielsweise dieses Ziel in MVC zu erreichen, können wir den Benutzernamen des Login in Cookies speichern. Dann können wir die Benutzer über den Parameter login_hint=userName
wechseln. Wir brauchen die SignIn
Methode unabhängig von den Benutzern geändert werden können Anmelde-wie unten:
public void SignIn(string userName)
{
HttpContext.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = "/" }, OpenIdConnectAuthenticationDefaults.AuthenticationType);
}
Und wir können die login_hint
Parameter über benutzerdefinierte Add die RedirectToIdentityProvider
von OpenIdConnectAuthenticationNotifications
:
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);
}
},
});
Und im Blick , wir müssen die Benutzeroberfläche zur Verfügung stellen, um Benutzer zu wechseln, hier ist ein einfaches Beispiel, nur um zu demonstrieren, können Sie den Code ändern erhalten Sie den Benutzernamen von Benutzern aus Cookies:
Haben Sie immer noch das Problem mit diesem Szenario? Bitte lassen Sie mich wissen, wenn es hilft. –
@ FeiXue-MSFT Vielen Dank für das Einchecken. Ich habe Ihre Antwort viele Male neu gelesen, und nicht sicher, was die Wirkung von 'context.ProtocolMessage.Parameters.Add' und wie ich Cookies verwenden sollte, um dies zu erreichen. In Wirklichkeit wählen die Leute nicht nur von vielen MSAL- oder ADAL-Konten, sondern auch von Konten von Drittanbietern. – LamonteCristo