2015-04-07 83 views
0

我有一个应用程序(AppA)需要通过另一个应用程序(AppB)访问URL。在Java中实现SAML SSO

AppB是服务提供者,也有身份提供者。

我想创建一个自动的方式来访问我的应用程序在AppA的URL。

我知道在服务提供商给用户(在这种情况下是我的应用程序)之后,用户需要使用用户名和密码登录的身份验证URL后,在SAML协议中。我想知道是否有通用的方式来实现这个标志,或者我必须使用我已经拥有的用户名和密码来实现类似POST请求的东西?

+0

改写以确保我明白:AppA需要访问由某种Web访问控制系统保护的AppB提供的资源? –

回答

0

在SAML世界中,您需要调用一个身份决策点(idp),策略决策点(pdp)和策略执行点(pep)以及一个服务。 idp以用户证明其身份的方式提供身份验证。 pdp信任idp,并将决定用户将提供有效的idp文档的授权级别。基于pdp文档,pep将允许或拒绝对服务的访问。

联系服务的一般流程是直接调用它,导致响应的响应为not authorized。结果应该包括关于接受的pdps的信息。接下来调用pdp,它将提供接受idps的信息。客户端然后联系idp并代表用户进行身份验证。生成的由idp签名的文档被传递给pdp。然后来自pdp的签名响应再次传递给服务。服务十与文件联系。

在现实世界中,点可能不是单个实例,而是合并。所以服务也可能包含pep,或者idp也可以是pdp。

所以看看你的架构/基础设施。

+0

有没有这样的图书馆?或者你有实施指南?因为那是我正在寻找的 –

+0

idp上的身份验证是idp特有的。请更新您的问题并提供有关参与方的更多信息。 – Hannes

+0

我不确定我是否同意你选择的术语Hannes。您使用的大多数术语在访问控制系统(如SAML的表弟,XACML:http://en.wikipedia.org/wiki/XACML)中更常见。您可以在SAML术语表中找到PDP/PEP/etc,但只能参考授权,而不是身份验证(SAML插入的地方)。 https://en.wikipedia.org/wiki/Security_Assertion_Markup_Language –