来自 IdP 的 Saml 响应后的自定义身份验证
Custom Authentication After Saml Response From IdP
关于我们环境的一些背景知识:
- 带有 CustomAuthProvider 的服务堆栈 SP
- Angular 6 前端
- 企业联盟 IdP
用户可以通过单击按钮向我们进行身份验证,然后我们的 SP 会将他们重定向到 IdP。一旦他们通过 IdP 进行身份验证,它将通过 HTTP-POST 向我们的 ACS 发送回响应。
我们如何通过我们对用户进行身份验证?我们是否应该将重定向发送回浏览器,然后我们的登录页面将发出正常的 /auth/credentials 请求?我们的 /auth/credentials 路由需要用户名和密码,但我们没有从 SAML 响应中获得这些信息。这部分让我很困惑,任何帮助将不胜感激!
您的应用未进行身份验证,IdP 进行身份验证。您的应用授权。 IdP 可能会使用包含属性的断言通过重定向到您的 ACS(对于 SAML2)进行响应。您可以要求 IdP return,例如 eduPersonEntitlement,其值为 perhaps:
https://yourapp.com/access
如果断言中存在此属性,那么您可以认为用户已通过身份验证和授权,因此只需为他们创建一个会话等。
如果您的应用程序具有细粒度的访问控制,您可以让 IdP 根据用户身份释放具有不同值的属性,即 IdP 了解他们的帐户(例如 LDAP OU)以获得更细粒度授权:
http://yourapp.com/access/private/staff
您的应用绝不会看到他们的凭据,因为这些凭据是针对 IdP 的。您的应用程序只关心包含属性的 SAML 断言,该断言在用户将其凭据提供给 IdP 进行身份验证后到达您的 ACS。
如果您需要为用户提供个性化服务,例如应用程序设置或外观等,通常使用 NameID or eduPersonTagetedID 来完成。它们本质上是不透明的标识符,将到达该用户的断言中。每当用户 'logs in'(在 IdP 处)时,您的应用程序将获得相同的 NameID 或 eduPersonTagetedID 值。如果您需要更多信息,例如他们的姓名或电子邮件地址,您可以要求 IdP 也发布这些信息,但要遵守数据隐私法。您的应用永远不需要像 IdP 那样对用户进行身份验证。您的应用程序只需要授权访问并使用 IdP 发布的属性为他们创建配置文件。
关于我们环境的一些背景知识:
- 带有 CustomAuthProvider 的服务堆栈 SP
- Angular 6 前端
- 企业联盟 IdP
用户可以通过单击按钮向我们进行身份验证,然后我们的 SP 会将他们重定向到 IdP。一旦他们通过 IdP 进行身份验证,它将通过 HTTP-POST 向我们的 ACS 发送回响应。
我们如何通过我们对用户进行身份验证?我们是否应该将重定向发送回浏览器,然后我们的登录页面将发出正常的 /auth/credentials 请求?我们的 /auth/credentials 路由需要用户名和密码,但我们没有从 SAML 响应中获得这些信息。这部分让我很困惑,任何帮助将不胜感激!
您的应用未进行身份验证,IdP 进行身份验证。您的应用授权。 IdP 可能会使用包含属性的断言通过重定向到您的 ACS(对于 SAML2)进行响应。您可以要求 IdP return,例如 eduPersonEntitlement,其值为 perhaps:
https://yourapp.com/access
如果断言中存在此属性,那么您可以认为用户已通过身份验证和授权,因此只需为他们创建一个会话等。
如果您的应用程序具有细粒度的访问控制,您可以让 IdP 根据用户身份释放具有不同值的属性,即 IdP 了解他们的帐户(例如 LDAP OU)以获得更细粒度授权:
http://yourapp.com/access/private/staff
您的应用绝不会看到他们的凭据,因为这些凭据是针对 IdP 的。您的应用程序只关心包含属性的 SAML 断言,该断言在用户将其凭据提供给 IdP 进行身份验证后到达您的 ACS。
如果您需要为用户提供个性化服务,例如应用程序设置或外观等,通常使用 NameID or eduPersonTagetedID 来完成。它们本质上是不透明的标识符,将到达该用户的断言中。每当用户 'logs in'(在 IdP 处)时,您的应用程序将获得相同的 NameID 或 eduPersonTagetedID 值。如果您需要更多信息,例如他们的姓名或电子邮件地址,您可以要求 IdP 也发布这些信息,但要遵守数据隐私法。您的应用永远不需要像 IdP 那样对用户进行身份验证。您的应用程序只需要授权访问并使用 IdP 发布的属性为他们创建配置文件。