[英].net 5 Azure b2c logout loop
您好,我正在嘗試在應用程序中實現 azure b2c。 登錄時一切正常。但是當我注銷時,它陷入了無限循環。 我能找到的所有示例似乎都是 .net core 3.1。
這是我的應用程序設置。
"AzureAdB2C": {
"Instance": "https://xxx.b2clogin.com",
"TenantId": "xxx",
"ClientId": "xxx",
"Domain": "xxx.onmicrosoft.com",
"SignedOutCallbackPath": "/signout/B2C_1_Normal",
"SignUpSignInPolicyId": "B2C_1_Normal",
//"CallbackPath": "/signin/B2C_1_Normal"
}
這是我的啟動。
services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(options =>
{
Configuration.Bind("AzureAdB2C", options);
}).EnableTokenAcquisitionToCallDownstreamApi(new string[] { Configuration["ApiScope"]
})
.AddInMemoryTokenCaches
services.AddControllersWithViews(options=>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
options.Filters.Add(new AuthorizeFilter(policy));
}).AddMicrosoftIdentityUI();
要退出,我只需單擊一個按鈕。
<a class="nav-link" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignOut">Sign out</a>
它確實讓我退出,但我被困在一個重定向循環中回到我的應用程序,然后又回到 B2C。
我嘗試在本地環境中進行測試,並且使用 AzureAdB2C 憑據從我的 Web 應用程序登錄和注銷成功地進行了測試。
以下是我遵循的步驟:
在 Portal 中創建了一個 B2C 租戶並將其鏈接到我的訂閱。
鏈接后創建了一個應用注冊,選擇如下,並使用 id 和 access token 進行身份驗證。
我已經添加了用戶流並選擇以下配置:
然后在 Visual Studio 中創建了一個 Asp.net 核心 Web 應用程序並提供我在上面創建的域和策略詳細信息
域名 - Azure AD B2C 概覽選項卡 應用程序 ID - 來自應用注冊概覽選項卡 注冊或登錄策略 - 來自用戶流概覽
復制回復 URI 並粘貼到門戶的重定向 URI 部分
這是我的appsettings.json
文件
它允許我登錄並在注銷后也重定向到我的主頁:
有關更多信息,請參閱以下鏈接:
我遇到了同樣的問題,這是因為缺少對 Razor 頁面的支持。 默認的 Microsoft.Identity.Web.UI SignOut 操作使用 /Account/SignedOut Razor 頁面作為回調 url。
var callbackUrl = Url.Page("/Account/SignedOut", pageHandler: null, values: null, protocol: Request.Scheme);
我在我的 Asp.Net 核心 Web 應用程序中添加了 Razor 支持,它解決了這個問題。
services.AddRazorPages();
和
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
或者,您可以使用自己的注銷端點,它可以使用任何操作作為注銷回調 url。
謝謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.