为Azure Web Site 添加ADFS验证支持之二 在代码里使用ADFS

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为Azure Web Site 添加ADFS验证支持之二 在代码里使用ADFS相关的知识,希望对你有一定的参考价值。

下面我们来创建一个MVC 5.0的ASP.Net程序,并且将它部署到Azure Web Site上

通过Visual Studio 2015创建Web Project 在选择ASP.net模板的地方,更改验证方式

 技术分享

在选择验证方式时选择“Work And School Accounts”,在文本框中填入

1.你公司的ADFS的Metadata的地址,这个地址可以找ADFS的管理员要到,通常如以下形式: https://{youradfs.yourcompany.com}/federationmetadata/2007-06/federationmetadata.xml

2.填入你的WEB应用的URI,因为ADFS是双向验证的,这个URI要跟上一步《为Azure Web Site 添加ADFS验证支持之一 设置ADFS的信任关系》里配置的Url一致 技术分享

Web Project创建完成了,如果你的ADFS发布到外网的SSL证书是有受信任的根证书颁发的,这时候只需要将WEB Project发布到Azure WEB Site上就搞定,但是很多时候企业的ADFS发布的SSL证书是自己的AD颁发的,Azure WebSite上并不能验证,这时候就需要在你的代码里面修改一下。 打开App_Start/Startup.Auth.cs将默认的代码,下面添加一行BackchannelCertificaeValidator=null

技术分享

public void ConfigureAuth(IAppBuilder app)
        {
            app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

            app.UseCookieAuthentication(new CookieAuthenticationOptions());

            app.UseWsFederationAuthentication(
                new WsFederationAuthenticationOptions
                {
                    Wtrealm = realm,
                    MetadataAddress = adfsMetadata,
                    BackchannelCertificateValidator=null,
                });
        }

打开Global.asax.cs添加以下代码:

 技术分享

protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            ServicePointManager.ServerCertificateValidationCallback = delegate
            {
                return true;
            };
        }

添加完代码之后就可以将Web Project发布到Azure Web Site上面了。

这时候我们用浏览器打开发布的Web Site地址,它就会自动跳转到ADFS的登录界面

技术分享

在这里我们就可以用企业里面的AD账号登录我们的Web Site了。

技术分享

 

 

这里有老外的篇Blog写的更加详细一些,英文好的同学可以参考一下:

http://www.tuicool.com/articles/NrMZ7v2

以上是关于为Azure Web Site 添加ADFS验证支持之二 在代码里使用ADFS的主要内容,如果未能解决你的问题,请参考以下文章

如何将ADFS用户添加到`AspNetUsers`中?

使用 Azure Active Directory 或 ADFS 或 AD 的 SSO

使用 ADFS 对 ASP.NET Web Api 进行身份验证

如何搭建一套Azure AD与ADFS集成身份的环境

如何通过 Azure AD B2C 使用身份验证功能在 Azure Web App 上添加身份验证?

如何搭建一套Azure AD与ADFS集成身份的环境