【问题标题】:How to get SAML assertion from OpenAM (using Java)?如何从 OpenAM(使用 Java)获取 SAML 断言?
【发布时间】:2012-10-14 06:02:36
【问题描述】:

我正在寻找一些方法(最好是通过 Java 代码),使我能够通过 SSO 登录从服务提供商 (SP) 的 IDP(即 ForgeRock 的 OpenAM)获取 SAML 断言。

SP 已经配置为通过 Web 浏览器与 IDP 交互(例如 vCloud Director --> OpenAM,反之亦然)(即在调用 vCloud Director 登录页面时,用户将自动重定向到 OpenAM 登录页面)。但是,此过程仅适用于浏览器(提供重定向的地方),而不适用于浏览器之外。

我似乎找不到任何方法来执行 SSO 登录(通过使用来自 IDP 的 SAML 断言进行身份验证)。到目前为止,我遇到了十几个引用,包括来自 OpenAM SSO 的 AssertionIDRequestUtil.sendAssertionIDRequestURI 函数,但我仍然不确定在哪里可以检索 AssertionId 和 SAML EntityId 参数。

还有其他获取 SAML 断言的方法吗?或者其他方式来执行 SSO 登录?

【问题讨论】:

    标签: single-sign-on saml assertion openam vcloud-director-rest-api


    【解决方案1】:

    我认为实现这一目标的最简单方法是:

    1. 通过 REST 或 ClientSDK 执行身份验证
    2. 使用 Java HTTP 客户端启动 IdP 发起的 SAML 身份验证流程 (/openam/idpssoinit?metaAlias=/idp&spEntityID=entityID)。当您发送此请求时,您需要确保:
      • 会话 ID 是作为 iPlanetDirectoryPro cookie 的请求的一部分,
      • 不会执行会话升级(您在 IdP 的 authcontext 设置的 authLevel 将低于或等于在第一步中创建会话的级别)

    【讨论】:

    • 您好。谢谢您的回答。但是,我查看了来自 OpenAM 和 vCloud Director 的一些 REST 服务,但无济于事。
    • 对了,Session Id是指登录OpenAM时生成的token?
    • 另外,我很困惑,entityID 指的是 SP(即 vCloud Director)基本 URL 对吗?非常感谢。
    • REST 身份验证端点可以在 /openam/identity/authenticate 找到,但它只能处理用户名/密码组合。如果您需要更复杂的东西,那么您需要使用 ClientSDK 进行身份验证。实体ID将引用SP,您可以在SAML元数据中找到SP的实体ID。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多