Asp.net Identity使用密码和Azure Active Directory身份validation
我正在使用Asp.net Identity(OWIN)构建ASP.NET MVC 5网站,并希望支持传统的用户名/密码身份validation以及针对Azure Active Directory的身份validation。 此应用程序无需针对Microsoft ID(Live ID),Facebook,Twitter或任何其他外部提供程序进行身份validation。 我找到的最接近的SO问题是: 如何在ASP.NET MVC上执行Azure Active Directory单点登录和表单身份validation
我查看了使用“个人用户帐户”选项以及VS 2015中的“工作和学校帐户”选项创建项目时创建的示例。我的身份validation工作正常; 只有当我尝试将它们结合起来时,我才遇到问题。
在我的Startup_Auth.cs文件中,我正在配置OWIN,如下所示:
public void ConfigureAuth(IAppBuilder app) { app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType); //app.UseCookieAuthentication(new CookieAuthenticationOptions { }); app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ExternalCookie, LoginPath = new PathString("/account/sign-in") }); app.UseOpenIdConnectAuthentication( new OpenIdConnectAuthenticationOptions { ClientId = clientId, Authority = authority, TokenValidationParameters = new System.IdentityModel.Tokens.TokenValidationParameters { ValidateIssuer = false, }, Notifications = new OpenIdConnectAuthenticationNotifications() { SecurityTokenValidated = (context) => { return Task.FromResult(0); }, AuthorizationCodeReceived = (context) => { return Task.FromResult(0); }, AuthenticationFailed = (context) => { context.OwinContext.Response.Redirect("/Home/Error"); context.HandleResponse(); // Suppress the exception return Task.FromResult(0); } } } ); }
此配置适用于密码身份validation,但不适用于AAD身份validation。 要启用AAD身份validation,我需要注释掉设置AuthenticationType的行
AuthenticationType = DefaultAuthenticationTypes.ExternalCookie,
或者,只设置没有值的CookieAuthentication。
app.UseCookieAuthentication(new CookieAuthenticationOptions { });
我猜这有一个相对简单的方法,并会欣赏一些关于从哪里开始寻找的想法。
我搜索了微软的例子。 所有这些看起来都像是你的解决方案。 看这里:
- Web应用程序- WSFederation,DOTNET的
- Web应用程序,多租户,OpenIdConnect,DOTNET的
- Web应用程序- OpenIDConnect,DOTNET的
另一个例子是WindowsAzureActiveDirectoryBearerAuthenticationOptions
就在最近,ASP.NET团队的Damian Edwards 在github上开源了他们的社区站立网站 。 他们正在使用Azure AD,所以我希望它有助于朝着正确的方向发展,遗憾的是我对Azure AD没有任何经验。
这里也是他们谈论它的立场video ,我想有一些技巧和暗示你可以使用它们。
我意识到这是一个老问题。 我可能希望做类似的事情,但可能更像ASP.Net身份validation到多个Azure AD租户。 我发现这将Azure AD集成到ASP.NET Core中 ,其中包含以下声明:
…然后利用OnTokenValidated通知来实现您自己的发行者validation逻辑,具体取决于您要支持的租户(任何租户,Microsoft帐户+ Azure AD的特定列表,单个Azure AD,仅Microsoft帐户等)…
让我相信那里的示例代码可能是这个混合身份validation方案的关键。
上述就是C#学习教程:Asp.net Identity使用密码和Azure Active Directory身份validation分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1020727.html