2

我已将 adfs 配置为身份提供者,将 openam 配置为服务提供者,但是如何通过 adfs throght openam 测试登录是否正常工作。

任何人都可以帮助我使用 java 应用程序通过 openam 登录到 adfs 服务器。

谢谢,

4

1 回答 1

3

请参阅OpenAM 和 ADFS2 配置

这篇文章涵盖了你所有的问题。

更新:

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

请参阅在 Java Web 应用程序中使用 Fedlet(第 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>");
于 2012-10-23T18:04:03.333 回答