c# - ASP.NET MVC - 是否可以在多个身份验证系统之间进行选择
问题描述
我们有一个 ASP.NET MVC + Angular SPA 存储在 Azure 中的位置(相同的 AppService)。实际上,当我们访问 AppService URL(例如 myapp.customazure.com)时,它会触发 WsFederation 身份验证重定向到合作伙伴网站(外部提供商)。成功登录后,我们的 Home.cshtml 可以运行,这通常是我们的 Angular(我们在其中渲染 Angular javascript 文件)。
我们的 Home.cshtml 看起来像这样:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>MyApp.Web</title>
<base href="/">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link type="image/x-icon" href="favicon.ico" rel="icon" />
<link type="image/x-icon" href="favicon.ico" rel="shortcut icon" />
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
@Styles.Render("~/styles")
</head>
<body>
<app-root><div class="spinner"></div></app-root>
@Scripts.Render("~/runtime")
@Scripts.Render("~/polyfills")
@Scripts.Render("~/scripts")
@Scripts.Render("~/main")
</body>
</html>
WsFederation 配置存在于 Web.config 中,例如:
<location path="FederationMetadata">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
而且当然
<!-- Replaced during Azure DevOps Release-->
<system.webServer>
</system.webServer>
<!-- Replaced during Azure DevOps Release-->
<system.identityModel>
</system.identityModel>
<!-- Replaced during Azure DevOps Release-->
<system.identityModel.services>
</system.identityModel.services>
我们想要实现的是添加使用另一个选项 (Azure AD B2C) 进行身份验证的可能性。然后最后会有一个新视图 .cshtml 提供两个按钮,让用户在两种身份验证方法之间进行选择:
- 像往常一样与 WsFederation 连接
- 连接 Azure AD B2C(新选项)
实现这种事情是否可行?再次感谢你的帮助 !
解决方案
对的,这是可能的。正如您所说,第一页将有两个用于 WsFederation 和 B2C 的按钮。
现在,您必须根据用户按下的按钮将用户重定向到控制器操作方法。
对于MVC 中的 B2C 设置,您可以参考快速入门:使用 Azure Active Directory B2C 为 ASP.NET 应用程序设置登录。
此外,如果符合您的要求,请查看使用 WS-Federation 将 Web 应用与 Azure AD 集成。
推荐阅读
- r - 两个回归方程ggplot r的位置
- c - 如何在 Python 中释放 C 函数中分配的内存
- android - Android Studio xml预览仅字体问题
- python - 如何使用一个列值作为键在数据框中创建一个嵌套的 json?
- python - 如何获取文件的路径而不是当前工作目录
- android - 如何在 Firebase 中实现 BETWEEN Sql 查询?
- nmap - 用于操作系统检测的 snort 规则
- python - 具有自由端点的 Pyomo DAE 最优控制问题
- jquery - jquery - 如何关闭 div
- networking - 无法在 VM 外部访问 zeppelin 8080/8180