WIF应用与ADFS 2.0配置实战
2011-03-18 18:45
344 查看
步骤1:配置主机头。这应该不是必须,但是我配了。详见上一篇博客。
步骤结果:经测试用主机头的地址能访问。
步骤2:Add STS Reference:
其中Use an existing STS一步,输入ADFS的FederationMetadata.xml所在。这里需要注意输入机器名称和完整名称有轻微不同。例如:机器名为xxx,域名为abc,我这边的环境机器的完整名称应为:xxx.abc.loc。而在xxx这台机器上的证书是按照完整名称颁发的,所以输入机器名称和完整名称的区别是,输入机器名称然后下一步时会有警告,说证书和地址不符。
其他的步骤暂时都是按照最简单的来。
完毕后,结果是:
更改了web.config和增加了自身的FederationMetadata.xml文件。
步骤3:
在ADFS中增加信赖方
选择手动输入有关信赖方德数据。并启用对WS-Federation被动协议的支持。这里输入的url应为应用的url,即之前Add STS Reference时候指定的Application URI。
然后下一步的时候,这个url会自动作为信赖方标识符出现。注意!这里的标识符貌似是case sensitive的!也就是应和应用的audienceUris完全匹配(这个不是100%确定,忘了,反正是要和一个什么东西一致)
完毕。暂时可以不添加声明规则。
结果:增加了ADFS中的依赖方的配置。
步骤4:
测试。排查错误:
上面的错误消除后,应该能够回到应用的代码了。但是,如果有代码类似于HttpContext.Current.User.Identity.Name,则会报NullReference的异常。明明认证通过,为什么会是null呢?断点看看,可以知道Identity已经是Microsoft.IdentityModel.Claims.ClaimsIdentity的类型,而其有一属性为:DefaultNameClaimType = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"。而默认FedUtil工具生成的Claims会包括name和role,而这里是name,言下之意是ClaimsIdentity会根据name来确定Identity的name。
了解,行动:回到ADFS,添加一个转换传入声明,把Windows 账户名转成名称。
再来,搞定!
接下来应该差不多了。但如果测试的时候发现每次关闭browser再重新登陆都要log in的话,检查一下ADFS那个机器的adfs url的站点是否已经在IE的intranet站点中。没有的话,添加。
最基本的几个步骤。暂时记录一下,不然真的要忘了。
步骤结果:经测试用主机头的地址能访问。
步骤2:Add STS Reference:
其中Use an existing STS一步,输入ADFS的FederationMetadata.xml所在。这里需要注意输入机器名称和完整名称有轻微不同。例如:机器名为xxx,域名为abc,我这边的环境机器的完整名称应为:xxx.abc.loc。而在xxx这台机器上的证书是按照完整名称颁发的,所以输入机器名称和完整名称的区别是,输入机器名称然后下一步时会有警告,说证书和地址不符。
其他的步骤暂时都是按照最简单的来。
完毕后,结果是:
更改了web.config和增加了自身的FederationMetadata.xml文件。
步骤3:
在ADFS中增加信赖方
选择手动输入有关信赖方德数据。并启用对WS-Federation被动协议的支持。这里输入的url应为应用的url,即之前Add STS Reference时候指定的Application URI。
然后下一步的时候,这个url会自动作为信赖方标识符出现。注意!这里的标识符貌似是case sensitive的!也就是应和应用的audienceUris完全匹配(这个不是100%确定,忘了,反正是要和一个什么东西一致)
完毕。暂时可以不添加声明规则。
结果:增加了ADFS中的依赖方的配置。
步骤4:
测试。排查错误:
@Passive client: The X.509 certificate CN=Geneva Signing Certificate is not in the trusted people store
如果运行过程中出现了这个错误,那么恭喜,整个过程是正常的。说明已经成功从issuer方返回到了application方,只不过因为是测试环境的证书,所以不认。参考http://social.msdn.microsoft.com/Forums/en-SG/Geneva/thread/ca0be31e-ab2e-447f-8562-99ea9cbec86b 做更改。上面的错误消除后,应该能够回到应用的代码了。但是,如果有代码类似于HttpContext.Current.User.Identity.Name,则会报NullReference的异常。明明认证通过,为什么会是null呢?断点看看,可以知道Identity已经是Microsoft.IdentityModel.Claims.ClaimsIdentity的类型,而其有一属性为:DefaultNameClaimType = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"。而默认FedUtil工具生成的Claims会包括name和role,而这里是name,言下之意是ClaimsIdentity会根据name来确定Identity的name。
了解,行动:回到ADFS,添加一个转换传入声明,把Windows 账户名转成名称。
再来,搞定!
接下来应该差不多了。但如果测试的时候发现每次关闭browser再重新登陆都要log in的话,检查一下ADFS那个机器的adfs url的站点是否已经在IE的intranet站点中。没有的话,添加。
最基本的几个步骤。暂时记录一下,不然真的要忘了。
相关文章推荐
- WIF应用与ADFS 2.0配置实战(续):实现SSO
- vue2.0构建单页应用最佳实战案例 vue.js
- 《精通Spring4.X企业应用开发实战》读后感第五章(<bean>之间的关系\整合多个配置文件)
- 《精通Spring4.X企业应用开发实战》读后感第五章(基于Java类的配置)
- vue2.0构建单页应用最佳实战
- Mongodb应用实战教程:windows下安装与安全策略配置
- Spring 3.x企业应用开发实战(12)----基于Schema配置切面
- jQuery2.0应用开发:SSH框架整合jQuery2.0实战OA办公自动化
- Vue 2.0 构建单页应用最佳实战
- Yii Framework2.0开发教程(1)配置环境及第一个应用HelloWorld
- apache 多个tomcat 多个应用 整合配置(实战结果)
- Spring 3.x企业应用开发实战(11)----基于@AspectJ配置切面
- 实战应用之zookeeper【统一配置管理】
- ADFS 2.0 配置简介 PartⅠ – 安装ADFS
- LNMP架构应用实战——Nginx配置虚拟主机
- JavaSE实战——jdk配置,数组及其应用,栈和堆内存图解
- 《精通Spring4.X企业应用开发实战》读后感第五章(基于注解的配置)
- jQuery2.0应用开发:SSH框架整合jQuery2.0实战OA办公自动化(VSS、operamasks-UI框架)
- 基于Hadoop2.0、YARN技术的大数据高阶应用实战
- OpenSIPS实战(五):负载均衡配置与应用