IFD部署一段时间后,大概一年,突然出现从IFD登录页面登录后,再次弹出要求登录的框,多次输入用户名密码仍然无效,查看日志:
><TraceRecord xmlns="http://schemas.microsoft.com/2009/10/IdentityModel/TraceRecord"Severity="Error"><Description>已处理的异常。</Description><AppDomain>/LM/W3SVC/2/ROOT-1-130282292932840932</AppDomain><Exception><ExceptionType>System.IdentityModel.Tokens.SecurityTokenException,System.IdentityModel, Version=4.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089</ExceptionType><Message>ID4175:IssuerNameRegistry 未识别安全令牌的颁发者。若要接受此颁发者的安全令牌,请配置 IssuerNameRegistry 以返回此颁发者的有效名称。</Message><StackTrace> 在Microsoft.IdentityModel.Tokens.Saml11.Saml11SecurityTokenHandler.CreateClaims(SamlSecurityTokensamlSecurityToken)
> 在Microsoft.IdentityModel.Tokens.Saml11.Saml11SecurityTokenHandler.ValidateToken(SecurityTokentoken)
> 在Microsoft.IdentityModel.Tokens.SecurityTokenHandlerCollection.ValidateToken(SecurityTokentoken)
> 在Microsoft.IdentityModel.Web.TokenReceiver.AuthenticateToken(SecurityTokentoken, Boolean ensureBearerToken, String endpointUri)
> 在 Microsoft.IdentityModel.Web.WSFederationAuthenticationModule.SignInWithResponseMessage(HttpRequestrequest)
> 在Microsoft.IdentityModel.Web.WSFederationAuthenticationModule.OnAuthenticateRequest(Objectsender, EventArgs args)
> 在 Microsoft.Crm.Authentication.Claims.CrmFederatedAuthenticationModule.OnAuthenticateRequest(Objectsender, EventArgs args)
> 在System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
> 在System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&amp; completedSynchronously)
> 在System.Web.HttpApplication.ApplicationStepManager.ResumeSteps(Exception error)
> 在System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContextcontext, AsyncCallback cb, Object extraData)
> 在System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr)
> 在System.Web.Hosting.ISAPIRuntime.ProcessRequest(IntPtr ecb, Int32 iWRType)
></StackTrace><ExceptionString>System.IdentityModel.Tokens.SecurityTokenException:ID4175: IssuerNameRegistry未识别安全令牌的颁发者。若要接受此颁发者的安全令牌,请配置 IssuerNameRegistry以返回此颁发者的有效名称。</ExceptionString></Exception></TraceRecord>
根据日志内容能够判断出问题处在了CA证书上,于是打开ADFS2.0的部署管理器:
之前解密和签名的令牌应该是各只有一个的,怎么都多出来一个了!再去网上找了找相关资料,没什么太多相关的资料,但有个国外的blog似乎说到了要点:原来的解密和签名的令牌在即将过期时,系统会自动续一个!那么这就是多出来的原因了!
于是按照以下方法操作了一遍:
1.更新所有FederationMetadata URL,即联合元数据的URL
2. iisrest
3.重启ADFS服务
最后,再次登录成功!