Azure active directory 无法使用其他帐户或“登录”;“使用其他帐户”;
我正在尝试将Microsoft sso与Xamarin.Forms应用程序集成 我正在使用Microsoft.Identity.Client 4.7.1 我很难在同一台设备上使用不同的帐户登录,因为无论我做什么,似乎总是选择第一个帐户Azure active directory 无法使用其他帐户或“登录”;“使用其他帐户”;,azure-active-directory,msal,Azure Active Directory,Msal,我正在尝试将Microsoft sso与Xamarin.Forms应用程序集成 我正在使用Microsoft.Identity.Client 4.7.1 我很难在同一台设备上使用不同的帐户登录,因为无论我做什么,似乎总是选择第一个帐户 用户A登录 用户A注销 用户B进入应用程序打开带有Microsoft登录页的webview,并提示“使用其他帐户”按钮,但即使在键入其帐户后,webview也会将其重定向回移动应用程序(用户A) 以下是处理登录和退出的代码: 私有IPPublicClient应用
私有IPPublicClient应用程序_publicClientApplication;
公共服务()
{
_publicClientApplication=PublicClientApplicationBuilder.Create(Constants.MicrosoftAuthConstants.ClientId.Value)
.WithAdfsAuthority(常数.MicrosoftAuthConstants.Authority.Value)
.WithRedirectUri(常量.MicrosoftAuthConstants.RedirectUri.Value)
.Build();
}
公共异步任务SignInAsync()
{
var authScopes=Constants.microsoftauthctants.Scopes.Value;
AuthenticationResult authResult;
尝试
{
//调用_publicClientApplication.AcquireTokenSilent
authResult=等待GetAuthResultSilentlyAsync();
}
捕获(MsalUiRequiredException)
{
authResult=await\u publicClientApplication.AcquireTokenInteractive(authScopes)
.WithParentActivityOrWindow(App.ParentWindow)
.ExecuteAsync();
}
返回authResult.AccessToken;
}
私有异步任务GetCachedAccountAsync()=>(等待publicClientApplication.GetAccountsAsync()).FirstOrDefault();
公共异步任务SignOutAsync()
{
var firstCachedAccount=await GetCachedAccountAsync();
wait_publicClientApplication.RemoveAsync(firstCachedAccount);
}
一种解决方法是使用
提示符.ForceLogin
,但是如果每次都必须键入凭据,那么sso的意义何在。代码行等待_publicClientApplication.RemoveAsync(firstCachedAccount)
jsut可以从缓存中删除用户,但它不实现签出方法。因此,您需要通过以下方式手动注销:
我问了这个问题之后就用了这个。但对我来说有点奇怪,没有一个“真正的”注销方法。就我在他们发行的主要回购协议中所见,他们正在努力改进。我建议每个有类似问题的人都关注他们在Github上的回购协议。
https://login.microsoftonline.com/common/oauth2/v2.0/logout?post_logout_redirect_uri=https://localhost/myapp/