Ian*_*son 9 c# azure azure-ad-b2c
我目前正在构建一个 C# Net Core 2.2 应用程序,该应用程序使用 Azure B2C OIDC 进行登录/身份验证。我已经自定义了登录页面,并且知道如何使用自定义页面布局使用我网站上托管的 CSS 和代码来自定义编辑/忘记密码屏幕。
我遇到的问题是在注销时,我被重定向到 /AzureADB2C/Account/SignOut。我想像使用登录页面一样修改 CSS,或者更改该 URL 以转到托管在我网站上的自定义控制器操作。
有谁知道如何/什么过程是管理?看起来很奇怪,他们将为“除”注销过程之外的所有内容提供自定义布局。
作为一种解决方法,我发现我可以添加一个“重写选项”来处理注销 URL 并将其重写到我网站上的控制器。但是,我不确定这是否是完成此任务的最佳方式,它位于一个非常模糊的 MSDN 页面上,但确实有效。见下文:
Run Code Online (Sandbox Code Playgroud)// Inside Startup.cs // Workaround for SignedOut URL error in MSFT code RewriteOptions rewrite = new RewriteOptions().AddRedirect("AzureADB2C/Account/SignedOut","Account/SignedOut"); app.UseRewriter(rewrite);
如果查看Microsoft.AspNetCore.Authentication.AzureADB2C.UI nuget 包中 AccountController的源代码,可以看到 callbackUrl 被硬编码为 (/AzureADB2C)/Account/SignedOut。
但是没有要求使用该控制器。只需在您自己的控制器上调用您自己的 SignOut 操作即可。复制粘贴 AzureADB2C SignOut 操作中的代码并将 callbackUrl 更改为您自己的。
编辑 _LoginPartial.cshtml:删除 asp-area="AzureADB2C" 并使用您自己的 asp-controller 和 asp-action。
小智 2
我假设您正在使用用户流(策略)来自定义您的登录/配置文件编辑/密码重置页面。您可能会注意到没有注销用户流程,因此您无法在此处执行任何操作。
但微软为您提供了另一种方式来拥有自己的注销后页面。当您从 Web 应用程序注销时,您应该重定向到 B2C 的注销端点,如此处所述。(注意:即使您不想要自定义注销页面,这也是您应该做的)
当您想要让用户退出应用程序时,仅清除应用程序的 cookie 或以其他方式结束与用户的会话是不够的。将用户重定向到 Azure AD B2C 以注销。如果您不这样做,用户可能能够重新对您的应用程序进行身份验证,而无需再次输入其凭据。
注销端点可以在查询字符串中接收可选的post_logout_redirect_uri参数,您可以在其中指定另一个 URL,您的用户将最终由 B2C 重定向到该 URL。这可以是任何资源的地址,例如您的主页或您自己的页面,向用户显示“您已成功退出我们的服务”消息。
post_logout_redirect_uri - 用户成功注销后应重定向到的 URL。如果未包含,Azure AD B2C 会向用户显示一条通用消息。
| 归档时间: |
|
| 查看次数: |
4088 次 |
| 最近记录: |