首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在同一mvc应用程序中使用表单身份验证和Azure AD登录

在同一mvc应用程序中使用表单身份验证和Azure AD登录
EN

Stack Overflow用户
提问于 2017-06-02 17:15:40
回答 2查看 2.4K关注 0票数 1

我正在使用具有azure AD登录选项(OpenId身份验证)的mvc应用程序。我需要为管理员提供模拟选项。因此,我决定对此模拟登录使用表单身份验证。现在我的问题是,何时在webconfig中启用表单身份验证会影响azure AD登录。一旦添加了表单身份验证,它将连续显示重定向与belo url,http://localhost:9666/members/logon?ReturnUrl=%2fmembers%2flogonusingazure%3freturnUrl%3d%2f&returnUrl=/

web配置中用于表单身份验证的代码。

代码语言:javascript
复制
<authentication mode="Forms">
      <forms loginUrl="~/members/logon" cookieless="UseCookies" name="MvcForumAuth" slidingExpiration="true" timeout="432000" />
    </authentication>

谢谢,Nagaraj M。

EN

回答 2

Stack Overflow用户

发布于 2017-06-05 13:38:47

表单身份验证是ASP.NET身份验证框架的旧版本,ASP.NET MVC的默认模板在最新版本的Visual Studio中实现了ASP.NET身份框架。

您可以尝试使用OWIN CookieAuthentication和ASP.NET身份来处理本地身份验证,而使用OpenIdConnect进行AzureAD身份验证。

要使用MVC,如果您使用单个帐户进行身份验证来生成一个新的asp.net项目,那么除了Account控制器之外,您还可以看到为Startup类自动生成的代码,该控制器具有用于直接身份验证和ExternalLogin (第三方)的登录操作。

然后,你可以使用Azure OpenID连接OWIN中间件从Azure Active Directory租户登录用户:

  1. 将Microsoft.Owin.Security.OpenIdConnect库安装在NuGet中。
  2. Startup类中,设置OpenIdConnect管道:

app.UseOpenIdConnectAuthentication(新建OpenIdConnectAuthenticationOptions { ClientId = clientId,授权=授权,PostLogoutRedirectUri = postLogoutRedirectUri,RedirectUri = postLogoutRedirectUri,通知=新建上下文{ AuthenticationFailed = context => { context.HandleResponse();context.Response.Redirect("/Error?message=“+ context.Exception.Message);return Task.FromResult(0);});

现在,您可以使用本地身份帐户和azure广告帐户作为外部用户登录您的应用程序:

此外,您需要在web.config中设置<authentication mode="none" />,以便让OWIN从IIS接管应用程序的身份验证/授权过程。

票数 2
EN

Stack Overflow用户

发布于 2017-12-05 01:21:24

根据Nan Yu上面的建议,有时应用程序会在进入身份登录页面之前尝试进行Azure Ad / OpenId登录。我不知道为什么,但是配置forms身份验证似乎工作得很好

代码语言:javascript
复制
<authentication mode="Forms">
      <forms loginUrl="~/Account/Login/" timeout="2880"/>
</authentication>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44325156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档