微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ASP.NET MVC - 是否可以在多个身份验证系统之间进行选择

如何解决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 设置,您可以参考Quickstart: Set up sign in for an ASP.NET application using Azure Active Directory B2C

此外,请查看 Integrating a web app with Azure AD using WS-Federation 是否符合您的要求。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。