Javascript 如何在AngularJS应用程序中访问Shibboleth SP属性

Javascript 如何在AngularJS应用程序中访问Shibboleth SP属性,javascript,angularjs,single-sign-on,saml-2.0,shibboleth,Javascript,Angularjs,Single Sign On,Saml 2.0,Shibboleth,我对SSO和Shibboleth都是新手 我已经在Apache服务器上成功实现了Shibboleth SP。每当用户尝试访问受保护的资源时,都会针对IDP对用户进行身份验证 基本上,Shibboleth SSO有以下6个步骤: 用户访问受保护的资源 SP确定IdP并发出身份验证请求 用户向IdP进行身份验证 IdP向SP发出回应 返回SP 返回到受保护的资源 我的客户端应用程序纯粹是使用AngularJS 1.6开发的 在第6步之前,一切正常。我的问题是: 第6步:如何在AngularJS客户端

我对SSO和Shibboleth都是新手

我已经在Apache服务器上成功实现了Shibboleth SP。每当用户尝试访问受保护的资源时,都会针对IDP对用户进行身份验证

基本上,Shibboleth SSO有以下6个步骤:

  • 用户访问受保护的资源
  • SP确定IdP并发出身份验证请求
  • 用户向IdP进行身份验证
  • IdP向SP发出回应
  • 返回SP
  • 返回到受保护的资源
  • 我的客户端应用程序纯粹是使用AngularJS 1.6开发的

    在第6步之前,一切正常。我的问题是:

    第6步:如何在AngularJS客户端应用程序中访问Shibboleth SP属性,如名字或姓氏?或者甚至可以在AngularJS应用程序中直接访问这些属性吗?

    Shibboleth Wiki没有提到任何关于使用AngularJS访问属性的内容

    求你了。任何帮助|指导|建议|反馈都将不胜感激

    [更新]

    httpd.conf

    我的httpd.conf非常简单。我为Shibboleth做的唯一额外配置如下所示。Rest一切都是默认的

    LoadModule mod_shib /usr/lib64/shibboleth/mod_shib_24.so
    
    ServerName 10.63.32.125
    
    <Location /licweb>
      AuthType shibboleth
      Require valid-user
      ShibRequireSession On
      ShibUseHeaders On
    </Location>
    
    我想在运行URL的AngularJS客户端网站上访问此属性:


    任何帮助都将不胜感激。谢谢。

    当IdP返回响应时,这些属性位于标题中。要访问它们,您必须在受保护的位置启用shibboleth标头:

    <Location /SECUREPATH >
        AuthType shibboleth
        ShibRequireSession On
        ShibUseHeaders On
        Require valid-user
    </Location>
    
    
    身份验证类型shibboleth
    对…的要求
    白痴
    需要有效用户
    
    您将能够通过javascript中的标题访问参数。但是欺骗是可能发生的

    这是我们访问标题的方式。我们使用Shibboleth作为自己的apache服务器:

    • 用户访问/安全路径

    • Shibboleth重定向到IdP

    • IdP返回到可查看的安全路径。阿帕奇 重定向/安全到我们的web服务器,在那里我们有一个回调和 通过url访问属性。但我们将该url加密到 确保它来自我们。我还解雇了狗屎头

    如何在apache中访问客户标头:

    如何加密属性:

    我认为您不能直接从angular js访问属性。您可能需要一些服务器端支持(
    ajp
    对于
    java
    使用
    servlet
    )来读取属性


    有关信息,请参阅相关文档

    通过在会话处理程序中将
    contentType
    设置为
    application/json
    ,您将在URL
    /Shibboleth.sso/Session
    处获得一个
    json
    对象,而不是HTML。 您可以像任何其他
    JSON
    resource/restapi一样,在客户端JavaScript应用程序中请求它

    
    

    请参见

    你好,利奥。首先,非常感谢您的回复。但我仍然无法遵循你的第三步。你这是什么意思“Apache重定向/安全到。。。。。。。。。通过url的属性?你是如何做到的?这似乎是httpd.conf中的高级配置。我对Apache服务器完全陌生。我会更详细地更新我的问题,以便你能更好地解释我。请帮帮我。非常感谢您的帮助。更新了我的问题。@AnkitPrajapati,因为您的配置与我所做的不同。您已将shibboleth安装在与web服务器相同的服务器中。我把我的网络服务器和我的垃圾桶分开了。一旦您回到/licweb,这些属性就位于您的标题中。我对Angular没有经验,但是当从licweb加载内容时,您可以访问它们。我假设你有一个类似于app.get('/',function(req,res)的路由,它会在IdP返回时加载你的页面。在那里你可以通过
    res.headers
    访问标题,但这是我的问题。我如何访问它们?我不知道如何访问响应。我尝试过:$http.get(“。但是运气不好。它只提供我的html页面详细信息和数据。我在运行的同一台服务器上创建了一个PHP应用程序。配置了Shibboleth2.xml以在登录到此PHP应用程序后重定向用户。现在我正尝试使用$_server[“Shib Identity Provider”])和$_server[“HTTP_Shib_Identity_Provider”]访问属性;但它不获取任何内容。它只是空的。$\u SERVER打印所有服务器变量。但它没有任何Shibboleth变量。您是对的。我们需要一个服务器端脚本来读取Shibboleth SP属性。该脚本必须驻留在同一域中以及Shibboleth配置保护的位置。现在我可以读取在PHP脚本的帮助下创建Shibboleth属性。非常感谢您的帮助。非常感谢。您可以在此处发布代码示例以访问属性以帮助其他人。PHP脚本访问Shibboleth属性:$\u服务器[“displayName”]或$\u服务器[“givenName”]。如果Shibboleth SP已配置且工作正常,则会给出这些值。
    Miscellaneous
    Session Expiration (barring inactivity): 473 minute(s)
    Client Address: 10.63.32.125
    SSO Protocol: urn:oasis:names:tc:SAML:2.0:protocol
    Identity Provider: https://my-identity-provider
    Authentication Time: 2018-06-21T19:19:16.937Z
    Authentication Context Class: urn:oasis:names:tc:SAML:2.0:ac:classes:AuthenticatedTelephony
    Authentication Context Decl: (none)
    
    Attributes
    displayName: Doe,John
    givenName: John
    mail: john.doe@yahoo.com
    persistent-id: https://my-persistent-id
    sn: doe
    
    <Location /SECUREPATH >
        AuthType shibboleth
        ShibRequireSession On
        ShibUseHeaders On
        Require valid-user
    </Location>