2012-10-23 171 views
2

我已经配置ADFS身份提供者和openam作为服务提供商,但如何测试登录是否工作正常与ADFS throght openam通过openam ADFS。登录到使用Java应用程序

谁能帮我用java应用程序通过openam做登录到ADFS服务器。

感谢,

回答

3

参考OpenAM and ADFS2 configuration

文章涵盖了所有的问题。

更新:

的方式,我通常做,这是使用的OpenSSO/OpenAM的Java Fedlet添加。

参见Using Fedlets in Java Web Applications(第8章)。

的代码(按照Fedlet添加)显示令牌的内容是这样的:

Response samlResp = (Response) map.get(SAML2Constants.RESPONSE); 
Assertion assertion = (Assertion) map.get(SAML2Constants.ASSERTION); 
Subject subject = (Subject) map.get(SAML2Constants.SUBJECT); 
String entityID = (String) map.get(SAML2Constants.IDPENTITYID); 
String spEntityID = (String) map.get(SAML2Constants.SPENTITYID); 
NameID nameId = (NameID) map.get(SAML2Constants.NAMEID); 
String value = nameId.getValue(); 
String format = nameId.getFormat(); 
out.println("<br><br><b>Single Sign-On successful with IDP " 
    + entityID + ".</b>"); 
out.println("<br><br>"); 
out.println("<table border=0>"); 
if (format != null) { 
    out.println("<tr>"); 
    out.println("<td valign=top><b>Name ID format: </b></td>"); 
    out.println("<td>" + format + "</td>"); 
    out.println("</tr>"); 
} 
if (value != null) { 
    out.println("<tr>"); 
    out.println("<td valign=top><b>Name ID value: </b></td>"); 
    out.println("<td>" + value + "</td>"); 
    out.println("</tr>"); 
}  
String sessionIndex = (String) map.get(SAML2Constants.SESSION_INDEX); 
if (sessionIndex != null) { 
    out.println("<tr>"); 
    out.println("<td valign=top><b>SessionIndex: </b></td>"); 
    out.println("<td>" + sessionIndex + "</td>"); 
    out.println("</tr>"); 
}  

Map attrs = (Map) map.get(SAML2Constants.ATTRIBUTE_MAP); 
if (attrs != null) { 
    out.println("<tr>"); 
    out.println("<td valign=top><b>Attributes: </b></td>"); 
    Iterator iter = attrs.keySet().iterator(); 
    out.println("<td>"); 
    while (iter.hasNext()) { 
     String attrName = (String) iter.next(); 
     Set attrVals = (HashSet) attrs.get(attrName); 
     if ((attrVals != null) && !attrVals.isEmpty()) { 
      Iterator it = attrVals.iterator(); 
      while (it.hasNext()) { 
       out.println(attrName + "=" + it.next() + "<br>"); 
      } 
     } 
    } 
    out.println("</td>"); 
    out.println("</tr>"); 
} 
out.println("</table>"); 
+0

他们说只是在浏览器中打开的网址,但如果我通过邮寄方法打开的网址我得到异常“处理AuthnRequest.Null输入错误”,那么这意味着什么需要传递额外的参数到这个URL? – pbhle

+0

您试图访问哪个网址?配置调试日志http://lists.forgerock.org/pipermail/openam/2012-March/005339.html,看看是否给你任何线索。 – nzpcmad

+0

,当我在sp.xmlerror改变AuthnRequestsSigned =“假” 和WantAssertionsSigned =“假”走了,并与SAMLrequest令牌其显示的URL。 – pbhle