Javascript 如何在AngularJS应用程序中访问Shibboleth SP属性
我对SSO和Shibboleth都是新手 我已经在Apache服务器上成功实现了Shibboleth SP。每当用户尝试访问受保护的资源时,都会针对IDP对用户进行身份验证 基本上,Shibboleth SSO有以下6个步骤: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客户端
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加密到 确保它来自我们。我还解雇了狗屎头
我认为您不能直接从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>