惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
H
Help Net Security
N
Netflix TechBlog - Medium
Apple Machine Learning Research
Apple Machine Learning Research
P
Proofpoint News Feed
A
About on SuperTechFans
V
V2EX
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
宝玉的分享
宝玉的分享
aimingoo的专栏
aimingoo的专栏
F
Fortinet All Blogs
博客园 - 【当耐特】
Microsoft Security Blog
Microsoft Security Blog
Martin Fowler
Martin Fowler
I
InfoQ
Google DeepMind News
Google DeepMind News
人人都是产品经理
人人都是产品经理
Engineering at Meta
Engineering at Meta
腾讯CDC
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog RSS Feed
U
Unit 42
The Cloudflare Blog
Y
Y Combinator Blog

博客园 - 追萝驴

Nginx + Frp + Let'sEncrypt 泛域名证书 Devexpress XAF的前端优化策略 本页不但包含安全的内容,也包含不安全的内容。是否显示不安全的内容 WIF应用与ADFS 2.0配置实战 配置了主机头后访问站点持续要求输入身份凭证,之后401.1 IE持续崩溃备忘 Sharepoint 2010 备忘 APPDEV Sharepoint 2010 For Developers. 笔记 庆祝NH3 GA Released 兼思考两个问题的解决方案 - 追萝驴 WCF部署至IIS问题二则 WCF+Silverlight 异常处理 2 NHibernate: Batch Updates & Batch Inserts - 追萝驴 NHibernate: Session.Save 采用版本控制时无必要地自动Update版本字段的问题 WCF+Silverlight 异常处理 "Exception of type System.ExecutionEngineException was thrown" ExtJS: SuperBoxSelect supports single select mode [转]How to remove an assembly from the Cache if it is locked by Microsoft Installer Adding/removing fields and columns drag & drop bug's fix Ext JS继承: 关于object, constructor和prototype
WIF应用与ADFS 2.0配置实战(续):实现SSO
追萝驴 · 2011-03-21 · via 博客园 - 追萝驴

上一篇已经建立了Application和ADFS之间的信任关系,单点登录就已经是水到渠成的事情了。接下来把原来的站点复制一份来测试一下:

1.新建站点,并在站点下指定了虚拟目录(应用程序 in IIS 7.5)到复制的那份代码

2.配置SSL。原来采用的证书不是带星号的,这里重新创建一个自签名的证书,采用*.xxx.com的名称。关于这个,可以看看这里:http://forums.iis.net/t/1117559.aspx

3.修改原来的站点关联的证书为新建的这个。改后发现原来是disable的主机头变成enable了。

4.新站点绑定到HTTPS,采用新证书,设置不同的主机头。

5.同样,在DNS中注册新的主机

6.这个时候尝试访问新站点,报了一个异常:

源错误: 
执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。  
堆栈跟踪: 

[CryptographicException: 系统找不到指定的文件。]   System.Security.Cryptography.ProtectedData.Protect(Byte[] userData, Byte[] optionalEntropy, DataProtectionScope scope) +681   Microsoft.IdentityModel.Web.ProtectedDataCookieTransform.Encode(Byte[] value) +121
[InvalidOperationException: ID1074: 尝试使用 ProtectedData API 加密 Cookie 时发生了 CryptographicException (有关详细信息,请参阅内部异常)。如果正在使用 IIS 7.5,则这可能是应用程序池的 loadUserProfile 设置为 false 所致。]   Microsoft.IdentityModel.Web.ProtectedDataCookieTransform.Encode(Byte[] value) +1280740   Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler.ApplyTransforms(Byte[] cookie, Boolean outbound) +74   Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler.WriteToken(XmlWriter writer, SecurityToken token) +571   Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler.WriteToken(SessionSecurityToken sessionToken) +103   Microsoft.IdentityModel.Web.SessionAuthenticationModule.WriteSessionTokenToCookie(SessionSecurityToken sessionToken) +136   Microsoft.IdentityModel.Web.WSFederationAuthenticationModule.SignInWithResponseMessage(HttpRequest request) +639   Microsoft.IdentityModel.Web.WSFederationAuthenticationModule.OnAuthenticateRequest(Object sender, EventArgs args) +1099462   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +80   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +171

这样的异常信息真的是非常的programmer friendly,它连怎么解决都告诉你了。照做,异常消失。

7.系统页面能呈现了,但是,咦,为什么从ADFS验证完毕后又跳转到原来的站点了?哦,当然啦,我们adfs还没配。所以首先:

修改应用的配置文件,改web.config中的audienceUris和wsFederation中的realm为新的地址。另外,还应该修改FederationMetadata.xml中的<Address>节点。不过既然我们adfs中采用的是手动配置,而没有读取这个文件,其实这个文件修改与否应该没什么关系。

然后去到ADFS,用同样的方式建立一个信赖方。

再试,正常了!

8.测试。先用域用户测试,没有问题。用本机账户登录(而非域用户),弹出域验证输入框后,输入用户名密码后要勾选保存用户名和密码,关闭浏览器后再打开并访问系统才不会再次弹出域验证输入框。