很多时候企业开发的应用都会通过AD(Active Directory)进行验证用户名密码的,在企业里面统一一个AD来进行账号密码管理也是一个很好的实践。当企业打算将一个应用迁移到Azure的时候,使用AAD(Azure Active Directory)是一个很好的选择,但是如果采用AAD进行验证的话就需要将企业内的AD信息通过Azure AD Connect来进行账号密码的同步。很多企业的AD架构复杂,管理分散。一时间不一定能够将本地的AD和AAD链接在一起。这时候企业的开发团队又需要将一些企业应用部署到Azure上,如果将WEB应用部署到Cloud Service上的PaaS或者VM上面时可能问题不大,因为Cloud Service可以通过Site 2 Site VPN链接到企业内网,这样WEB应用可以直接通过内网地址直接访问AD。但是如果考虑将应用部署到Web Site上面的话,那就会遇到个小麻烦了,因为Web Site是不能加入到虚拟网络里面的,所以WEB Site跟企业的应用通信只能通过Internet了。为了给Azure Web Site访问AD就将AD直接暴露到Internet上面么(这是非常不安全的,IT管理员也不允许我们这么做),这时候可以选择的方法是在企业内网部署ADFS(Active Directory Federation Service),并且将ADFS的https(443)端口部署到Internet上,让Azure Web Site能够访问就好了。
部署ADFS的过程,我在这里就省略了,下面我们直接进入跟Azure Web Site相关的内容
1.规划WEB应用的Url
Azure Web Site希望能够通过ADFS来进行验证的话,首先需要受到ADFS的信任,这时候我们先要规划好WEB Site的访问的域名譬如app.contoso.com或者直接用website分配到的dns名称。
在这里我们就直接用Azure分配的域名adfscall.chinacloudsites.cn好了。
2.设置ADFS的信任
拿到这个dns域名之后,我们就需要将这个域名交给ADFS的管理员进行下面的配置了。
2.1打开ADFS管理工具->选择信赖方信任->添加信赖方信任
2.2选择”手动输入有关信赖方的数据”
2.3填入信赖方的显示名,这里要注意一点就是这个显示名称在ADFS里面是唯一的,如果我们打算有很多的WEB应用来使用ADFS的时候,就要为每个WEB应用起一个有意义的名字以便管理
2.4选择配置文件
2.5 配置证书,如果你不打算用专有的证书进行加解密的话,直接选下一步就好了
2.6 配置WEB应用的Url
在这里我们就要填入前面拿到的WEB Site的DNS名称(或者是你自己规划好的app.contoso.com),这里要注意的是ADFS为了安全考虑,所以信赖方必须支持https请求的。
通常ASP.Net的程序开启ws-federation的支持就好了,JAVA的程序或者其他平台程序就可以考虑开启SAML 2.0的支持,因为JAVA对SAML的支持和开源库会更加好找
2.7配置标识符
2.8配置剁成身份验证
2.9选择办法授权规则
这些都直接用默认选项,直接选“下一步”
到这里我们就完成了信赖方的信任了,点击关闭之后会跳出下面的界面:
在这里我们需要点击添加规则,因为用户在AD里面会有很多属性,基于安全考虑,我们不一定要将所有的AD属性都给WEB应用使用的,WEB应用能够访问那些AD属性就是通过这里来配置的,通常我们会配置下面几个属性
到这里我们就完成了ADFS端对WEB应用的配置了,下一步我们就要在应用里面使用这个ADFS了。