昨天我发布了一个关于我在ADFS中遇到的错误的具体问题 ,让我难住了。 由于我在解决基于Windows的产品方面的经验非常有限,我认为如何解决这个问题的build议将非常有帮助。
你会从这里采取什么措施进一步解决问题?
这看起来很有希望
ADFS的一个非常有用的方面是在ADFS附带的ASPX页面中具有代码级别的function。 这些对于添加代码来使用默认的家庭领域或者为了自定义的原因改变ADFS的行为是有帮助的。 这些还提供了一个简单的方法来对收到的SAMLResponses进行自定义validation。 这也可以用于在被ADFS使用之前处理SAMLResponse,以获得ADFS未提供的某些function。
通常会有几个标准的事情来检查传入的SAMLResponses和ADFS也会这样做,但可能并不总是给你一个人类可读或可理解的错误信息。 这些的一些例子是:
检查收到的SAMLResponse中的这些典型详细信息将帮助您识别问题,以便您的合作伙伴可以快速处理问题。
一个常见的要求是能够将SAMLResponselogging到ADFS接收到的每个请求的数据库中。 为此,只需将一些代码添加到global.asax.cs文件中,如下面的代码片段所示:
public void Application_BeginRequest() { HttpRequest request = HttpContext.Current.Request; HttpResponse response = HttpContext.Current.Response; if (!String.IsNullOrEmpty(request["SAMLResponse"])) { SaveSamlResponseToDB(request["SAMLResponse"].ToString()); } }
这样做后,您可以操纵SAMLResponse并对其进行自定义validation。 这提供了一种额外的validation机制,超出了目前的ADFS,对于各种testing场景非常有帮助。
基于Windowspipe理员的build议,我做了以下解决了这个问题。
此时,错误只发生在AD用户的一个子集中。 在这些用户身上,我重置了他们的密码,然后解决了这个问题。
虽然我不完全确定为什么这开始发生或者这些步骤如何解决它,我的理论是,不使用一个服务帐户来pipe理所有这些文件导致写入的文件不能被运行在不同帐户下的进程读入。
希望这有助于某人。