0

Я работаю с ADALv3 с Azure AD и хочу, чтобы мое приложение ASP.NET MVC (и приложение Xamarin) поддерживало переключение между различными пользователями Azure AD.Как настроить ADALv3 для поддержки переключения между идентификаторами пользователей ... аналогично Gmail?

Как настроить Azure AD для поддержки переключения пользователей, как показано ниже:

enter image description here

+0

У вас еще есть проблема с этим сценарием? Пожалуйста, дайте мне знать, если это поможет. –

+0

@ FeiXue-MSFT Спасибо за регистрацию. Я перечитывал ваш ответ много раз и не знаю, что такое эффект 'context.ProtocolMessage.Parameters.Add' и как я должен использовать файлы cookie для этого. В действительности, люди будут выбирать не только из многих учетных записей MSAL или ADAL, но и для сторонних учетных записей. – LamonteCristo

ответ

3

Существует нет такой функции не предусмотрено в Адал, мы должны реализовать себя.

Например, для достижения этой цели в MVC мы можем сохранить имя пользователя для входа в файлы cookie. Затем мы можем переключить пользователей с помощью параметра login_hint=userName. Нам не нужно, чтобы изменить метод SignIn независимо от того, что пользователи входа в, как показано ниже:

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

И мы можем добавить параметр login_hint по обычаю RedirectToIdentityProvider из 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); 
      } 
     },  
    }); 

И в представлении , мы должны предоставить пользовательский интерфейс для переключения пользователей, вот простой пример только для демонстрации, вы можете изменить код, чтобы получить имя пользователя пользователей из файлов cookie:

<li>@Html.ActionLink("Sign in-user1", "SignIn", "Account", routeValues: new { userName = "[email protected]" }, htmlAttributes: new { id = "loginLink" })</li> 
<li>@Html.ActionLink("Sign in-user2", "SignIn", "Account", routeValues: new { userName = "[email protected]" }, htmlAttributes: new { id = "loginLink" })</li> 
Смежные вопросы