我已将 adfs 配置为身份提供者,将 openam 配置为服务提供者,但是如何通过 adfs throght openam 测试登录是否正常工作。
任何人都可以帮助我使用 java 应用程序通过 openam 登录到 adfs 服务器。
谢谢,
这篇文章涵盖了你所有的问题。
更新:
我通常这样做的方式是使用 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>");