通过SAML验证Perl中的登录名和密码

时间:2019-06-25 12:59:12

标签: perl saml

是否可以在身份提供者(IdP)上通过SAML在Perl中验证登录名和密码?如果是,怎么办?

我知道这不是SAML正常运行的方式。

这样做的背景是,我们的Web应用程序有4个不同的客户端,它们应该通过SAML启用中央密码,而SAML是以完全不同的技术实现的。

我们的产品经理已决定,对于4个客户端而言,SAML连接过于复杂,因此身份验证应集中在Web应用程序中。

客户端将登录名和密码传输到Web应用程序,就像没有SSO一样,并且应该由Web应用程序集中验证访问数据。

1 个答案:

答案 0 :(得分:4)

问题1 :是否可以在身份提供者(IdP)上通过SAML验证Perl中的登录名和密码?如果是,怎么办?

答案
从网络安全的角度来看,肯定是

问题2 :我知道这不是SAML正常运行的方式。

答案
是。你是对的
(I)SAML规范定义了三个角色:用户,身份提供者(IdP)和服务提供者(SP)。在SAML解决的主要用例中,用户请求从服务提供商访问服务或登录Web应用程序。服务提供者从身份提供者请求并获得身份验证断言。基于此断言,服务提供商可以为用户做出访问控制决定,即可以决定是允许用户访问服务还是登录Web应用程序。

(II)在将基于主题的声明传递给SP之前,IdP可能会向用户请求一些信息(例如,用户名和密码)以认证用户。 SAML指定从IdP传递到SP的断言的内容。

(II.a)在SAML中,一个身份提供者可以向许多SP提供SAML断言。

(II.b)同样,一个SP可能依赖并信任许多IdP的断言。如果您的产品经理决定请求Web应用程序的所有4个不同的客户端来开发自己的SAML IdP,则这将是Web应用程序的SAML方案。例如,某些社交网站允许其用户通过第三方IdP(例如Google,Facebook,LinkedIn)通过OAuth 2协议或OpenID Connect协议/ OAuth 2(而不是SAML)提供的身份验证来登录其网络帐户。

问题3 :其背景是我们的Web应用程序有4个不同的客户端,它们应该通过SAML启用中央密码,而这些密码是在完全不同的技术中实现的。

答案
如果应该为您的Web应用程序使用4个不同的客户端通过SAML启用中央密码,则它们可以采用完全不同的技术或编程语言(例如Java,PHP或Scala)实现自己的SAML IdP。

(I)例如, 我们用 Java 开发了先前的Zero-Password Authentication and Authorization System版本,并利用了基于Java的Shibboleth IdP为企业应用程序提供SAML SSO。

我们在 Scala 中开发了具有扩展性和高可用性的Zero-Password Authentication and Authorization System当前版本,以为没有Shibboleth IdP的企业应用程序本机提供SAML SSO。

(II)无论您的Web应用程序的4个不同的客户端使用哪种技术或编程语言来实现自己的SAML IdP,其SAML IdP都只需要使用中央密码数据存储/存储库(例如, OpenLDAP或MySQL),然后使用SAML断言/ SAML响应将用户信息传递到Web应用程序/ SAML服务提供商。您的Web应用程序/ SAML服务提供商只需将SAML断言携带的用户信息映射到Web应用程序的本地用户信息。

问题4 :我们的产品经理认为SAML连接对于4个客户端来说太复杂了,因此,身份验证应该集中在Web应用程序中。

答案
如果用户身份验证需要集中在Web应用程序中而不是SAML IdP中进行,则从网络安全的角度来看,有四个不同的客户端不需要实施自己的SAML IdP。
相反,您只需要创建不同的子域并将其分配给所有4个不同的客户端,即Web应用程序的所有4个不同的客户端都访问不同的子域,例如client-org1.your-web-app.com,client -org2.your-web-app.com,client-org3.your-web-app.com,client-org4.your-web-app.com。

请注意,您的Web应用程序的不同子域显示相同的登录网页。示例1:client-org1.box.com,client-org2.box.com(如果您的客户还订阅Box帐户),或者示例2:client-org1.my.salesforce.com,client-org2.my.salesforce。 com,如果您的客户也订阅了Salesforce帐户。

问题5 :客户端将登录名和密码传输到Web应用程序,就像没有SSO一样,并且应该由Web应用程序集中验证访问数据。

答案
Web应用程序的不同子域显示相同的登录网页。 Web应用程序的4个不同客户端访问Web应用程序的不同子域,4个不同客户端的用户(通过不同的子域URL)将其登录名和密码提交给Web应用程序,就像没有SSO一样,并且数据存储/您的Web应用程序存储库应该集中验证访问数据(即登录用户名/密码)。然后,您的Web应用程序的4个不同的客户端不需要任何SAML IdP。