我有一个Blazor应用程序(.net5),它使用Microsoft.Identity.Web将用户签名到AzureAD中。它的这一部分都按预期工作-加载应用程序,它会自动获得"Microsoft“对话框。AuthenticationStateTask还将用户显示为"IsAuthenticated“。我的问题是尝试添加一个“退出”按钮。
我试过:
<a href="https://login.microsoftonline.com/common/oauth2/v2.0/logout">Log out</a>以及:
<a href="https://login.microsoftonline.com/{domainID}/oauth2/logout">Log Out</a>两人都带我到微软的“等一下,我们签了名”页面,唯一不同的是,第一个选项是问“哪个帐户”可以登录。在浏览器中按下" back“,或者再次手动转到站点地址,我就会自动作为前一位用户登录。如果我按下“注销”,然后手动转到:
/signout-oidc我得到了一个空白页(我理解是正确的),但回到Wep应用程序,我正确地要求再次登录-所以我的假设是,回调不是自动调用。
在我的appsettings.json中有:
"CallbackPath": "/signin-oidc",
"SignedOutCallbackPath": "/signout-callback-oidc",
"RemoteSignOutPath": "/signout-oidc",以及域名和租户等。
在Azure Web注册中,我在“前端通道注销URL”字段中有/signout-oidc。
我一定漏掉了什么东西(或者打错了URL?)然而,经过许多小时的研究,我无法解决它。
如能在此方面提供任何协助,将不胜感激。
发布于 2021-01-06 06:53:13
您可以像下面这样使用签出按钮,选择web应用程序中的“注销”按钮触发AccountController控制器上的SignOut操作。
<a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignOut">Sign out</a>有关详细信息,请参阅下面的doc - https://learn.microsoft.com/en-us/azure/active-directory/develop/scenario-web-app-sign-user-sign-in?tabs=aspnetcore#sign-out。
更新:
在Blazor中,您可以打开LoginDisplay.razor并按照下面的方式更新代码。
<AuthorizeView>
<Authorized>
Hello, @context.User.Identity.Name!
<a href="MicrosoftIdentity/Account/SignOut">Log out</a>
</Authorized>
<NotAuthorized>
<a href="MicrosoftIdentity/Account/SignIn">Log in</a>
</NotAuthorized>
</AuthorizeView>https://stackoverflow.com/questions/65589152
复制相似问题