我正在为具有以下体系结构的应用程序进行SAML身份验证。
用Laravel编写的前端应用程序-不处理身份验证 也使用Laravel编写的支持身份验证的后台API
我现在所拥有的是一个登录表单,该表单具有一个使用SAML按钮登录的按钮,该按钮可以单击向上重定向到Microsoft页面,并使用saml请求中的信息重定向前端应用程序上的回调页面。
现在,我需要验证用户身份并创建令牌,然后在前端应用程序中进行会话。 由于我使用的是SAML,因此我没有密码来进行传统的身份验证。 这意味着我需要一些API,可以从SAML传递 some 信息,以便能够检查该电子邮件是否存在于数据库中,并随后创建了令牌。
但是由于此API是公开的,所以我不能仅通过电子邮件发送邮件,因为这会让别人猜出来。 我该如何预防?
答案 0 :(得分:0)
使用信息重定向前端应用程序上的回调页面 来自saml请求
来自SAML请求的信息是您的身份验证事件。用户已通过在其身份提供商(Microsoft页面)上登录并使用其SAML属性返回到您的应用程序来对您的应用程序进行身份验证。
如果这是使用用户名/密码的传统身份验证,则密码匹配后,您将为其创建会话。在这种情况下,密码检查由Microsoft完成,并通过将SAML Response
发送到您的回调函数来告知您的应用程序成功。
如果您解析SAML Response
并提取属性,则可以使用其中之一来创建会话。诸如eduPersonTargetedID之类的持久性(对于该用户而言始终是相同的值)将允许您创建其会话。当他们注销并重新登录时,该eduPersonTargetedID
在其SAML Response
中将具有相同的值。
SAML Response
示例可用here。