【问题标题】:Retrieve custom attributes from shibboleth SP (best practices)从 shibboleth SP 中检索自定义属性(最佳实践)
【发布时间】:2019-03-31 08:41:00
【问题描述】:

我有一个带有 Apache httpdshibboleth 服务提供商,并且 id 将属性发送给我。

所以,我可以从https://mysp/Shibboleth/Session 中检索自定义属性,我所需要的只是从前端 (ReactJs) 向此链接发送请求并获取所有属性。

现在,我们将进入生产环境,但不建议将这种从会话中检索属性的方式用于生产环境。

那么你知道一种方法来检索经过身份验证的用户的属性并将数据转发到前端应用程序吗?

提前谢谢你

【问题讨论】:

    标签: apache shibboleth


    【解决方案1】:

    在我搜索并获得@Kellen Murphy 的帮助后,防止欺骗的最佳解决方案是使用环境变量。

    例如,我想向我的应用程序发送 USERNAME 属性。

    所以,我创建了一个可以从标题中读取会话数据的 php 页面

    <html>
     <head>
      <title>Session data</title>
     </head>
     <body>
    <?php
    print_r($_SERVER["HTTP_X_USERNAME"]);
    ?>
     </body>
    </html>
    

    然后我用

    开始了php页面

    php -S 本地主机:9000

    然后我将 env 变量作为头变量传递

        RequestHeader set X-USERNAME      %{USERNAME}e
        ProxyPass /Session http://localhost:9000
        ProxyPassReverse  /Session http://localhost:9000
    

    现在我可以通过攻击页面来检索我的属性: https://example.com/Session

    【讨论】:

      【解决方案2】:

      您不能直接从客户端访问该属性。必须有一些服务器端代码。有关 AngularJS 的类似请求,请参阅:How to access Shibboleth SP Attributes in AngularJS Application

      Shibboleth SP 将属性公开为服务器变量,并且只能从服务器端代码访问,请参阅:Shibboleth Service Provider 3.x Attribute Access(同样,已弃用但仍在广泛部署的 NativeSPAttributeAccess for SP v2.x)。

      您还可以允许 Shibboleth 通过 Apache 配置中的 ShibUseHeaders On 使用 HTTP 请求标头公开属性数据。

      如果您的后端是 Node.js,您可能会考虑将 Shibboleth 以外的其他东西作为您的 SAML 服务提供者,即saml2-js

      【讨论】:

      • 谢谢你的回答,它对我帮助很大,所以我为有同样问题的人提供了另一个关于我的问题的详细答案,但我会给 +1 ;)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-18
      • 2016-12-22
      • 1970-01-01
      • 1970-01-01
      • 2016-08-16
      相关资源
      最近更新 更多