通过SAML进行身份验证并在API中创建令牌

时间:2019-12-10 11:48:44

标签: php laravel saml saml-2.0

我正在为具有以下体系结构的应用程序进行SAML身份验证。

用Laravel编写的前端应用程序-不处理身份验证 也使用Laravel编写的支持身份验证的后台API

我现在所拥有的是一个登录表单,该表单具有一个使用SAML按钮登录的按钮,该按钮可以单击向上重定向到Microsoft页面,并使用saml请求中的信息重定向前端应用程序上的回调页面。

现在,我需要验证用户身份并创建令牌,然后在前端应用程序中进行会话。 由于我使用的是SAML,因此我没有密码来进行传统的身份验证。 这意味着我需要一些API,可以从SAML传递 some 信息,以便能够检查该电子邮件是否存在于数据库中,并随后创建了令牌。

但是由于此API是公开的,所以我不能仅通过电子邮件发送邮件,因为这会让别人猜出来。 我该如何预防?

1 个答案:

答案 0 :(得分:0)

  

使用信息重定向前端应用程序上的回调页面   来自saml请求

来自SAML请求的信息是您的身份验证事件。用户已通过在其身份提供商(Microsoft页面)上登录并使用其SAML属性返回到您的应用程序来对您的应用程序进行身份验证。

如果这是使用用户名/密码的传统身份验证,则密码匹配后,您将为其创建会话。在这种情况下,密码检查由Microsoft完成,并通过将SAML Response发送到您的回调函数来告知您的应用程序成功。

如果您解析SAML Response并提取属性,则可以使用其中之一来创建会话。诸如eduPersonTargetedID之类的持久性(对于该用户而言始终是相同的值)将允许您创建其会话。当他们注销并重新登录时,该eduPersonTargetedID在其SAML Response中将具有相同的值。

SAML Response示例可用here