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

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

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

 image

在选择验证方式时选择“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一致 image

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

image

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添加以下代码:

 image

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的登录界面

image

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

image

 

 

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

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

posted @ 2016-02-02 10:24  云上的翅膀  阅读(1289)  评论(0编辑  收藏  举报