我正在使用具有azure AD登录选项(OpenId身份验证)的mvc应用程序。我需要为管理员提供模拟选项。因此,我决定对此模拟登录使用表单身份验证。现在我的问题是,何时在webconfig中启用表单身份验证会影响azure AD登录。一旦添加了表单身份验证,它将连续显示重定向与belo url,http://localhost:9666/members/logon?ReturnUrl=%2fmembers%2flogonusingazure%3freturnUrl%3d%2f&returnUrl=/
web配置中用于表单身份验证的代码。
<authentication mode="Forms">
<forms loginUrl="~/members/logon" cookieless="UseCookies" name="MvcForumAuth" slidingExpiration="true" timeout="432000" />
</authentication>谢谢,Nagaraj M。
发布于 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租户登录用户:
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接管应用程序的身份验证/授权过程。
发布于 2017-12-05 01:21:24
根据Nan Yu上面的建议,有时应用程序会在进入身份登录页面之前尝试进行Azure Ad / OpenId登录。我不知道为什么,但是配置forms身份验证似乎工作得很好
<authentication mode="Forms">
<forms loginUrl="~/Account/Login/" timeout="2880"/>
</authentication>https://stackoverflow.com/questions/44325156
复制相似问题