【问题标题】:OpenAM, OpenId, REST API, In-House applications: how do I connect them all?OpenAM、OpenId、REST API、内部应用程序:如何将它们全部连接起来?
【发布时间】:2015-06-15 21:17:08
【问题描述】:

我无法将所有这些联系在一起。部分原因是缺乏理解,部分原因是我以前没有使用过 OpenAM。

我正在尝试实施单点登录。这是球员。

  1. OpenAm。 https://www.forgerock.com/en-us/products/access-management/
  2. 第 3 方专有应用,可以使用自己的用户名/密码数据库,或针对 SAML 或 OpenId 提供者进行身份验证。
  3. 用 angularjs 或 .net webforms 编写的多个内部应用程序。
  4. 用 nodejs 编写的内部 REST API。

我需要能够让用户在 openam 中登录/注册,然后他们不会登录到任何其他应用程序。我们在整个网络上都看到了这一点,所以用例很正常,但我以前从未真正自己实现过。

使用下面的图片了解我正在尝试做的事情。

这就是我正在努力解决的问题:

出于 SSO 的目的,OpenAM 似乎将经过身份验证的用户信息存储在 cookie 中。如果我的专有应用程序只能通过 openid 或 saml 进行身份验证,我的专有应用程序如何获取并使用它?它不能通过 /json/* 端点来使用 openam API。

对于内部应用程序,我假设我可以传递 cookie,相关方可以验证 cookie 的会话信息或令牌,仅此而已。这是正确的,还是我看错了?

我可以让用户登录到 OpenAm 登录页面,然后使用 /oauth2/* 端点来验证用户的请求吗?我可以看到这工作得更好,但不确定这是否应该发生。

基本上,我觉得上周我想解决这个问题。我需要一些帮助才能在这里找到方向。正如我上面所说,其中很大一部分是新的。我已经使用令牌完成了前端->rest api->数据库,但是这种 SSO 场景让我非常头疼。

任何帮助将不胜感激。

【问题讨论】:

    标签: asp.net node.js rest token openam


    【解决方案1】:

    在我看来,您错过了 SAML SSO 的“重定向”方面。我将尝试简单地解释它是如何工作的:

    第 1 步:

    当用户向您的内部应用程序之一发送请求时(在此处将其称为 S服务 P提供者,SP),SP 检测到这是一个未经身份验证的请求,并将浏览器重定向到 OpenAM 服务器(在此处将其称为I身份P提供者、IdP)。

    第 2 步:

    IdP 分析重定向请求并期望找到“SAML authnResponse”,这是 SP 在重定向请求中添加的编码 XML 元数据。它发现您的 SP 想要对用户进行身份验证。 IdP 将通过显示登录页面来响应请求。在这里,用户可以向 IdP 进行身份验证。在用户成功通过 IdP 的身份验证后,它会将他重定向回 SP,并在请求中添加“SAML authnResponse”。

    第 3 步:

    SP 将分析这个“SAML authnResponse”,它还是 XML 元数据的一种形式。如果签名验证成功,找出哪个用户成功通过了身份验证,为他创建一个会话并将他重定向到他最初尝试访问的资源。

    备注1:

    步骤 2 中,如果用户之前已经通过 IdP 的身份验证,那么他将与 IdP 进行有效会话。 IdP 不会要求他再次登录,而只需使用有效的“SAML authnResponse”立即将他重定向回 SP。这样,用户几乎不会注意到所有这些重定向,并且看起来他“无缝”地访问了 SP

    备注2:

    所以不要太担心 cookie,IdP 使用它们来识别已经过身份验证的用户会话等,但您应该只关心重定向和分析 SAML 响应和请求。这有意义吗?

    备注3:

    用户浏览器(GET 302 或 JS POST)的重定向方式取决于您选择的“SAML 配置文件”。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-06
    • 2018-10-05
    • 2020-04-26
    相关资源
    最近更新 更多