【问题标题】:Autheticate via SAML and create token in API通过 SAML 进行身份验证并在 API 中创建令牌
【发布时间】:2019-12-10 11:48:44
【问题描述】:

我正在为我的应用程序进行 SAML 身份验证,该应用程序具有以下架构。

用 Laravel 编写的前端应用程序 - 不处理身份验证 支持的 API 也是用 Laravel 编写的,用于处理身份验证

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

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

但是由于这个 API 是公开的,我不能只传递一封电子邮件,因为那样会让人猜到。 如何防止这种情况发生?

【问题讨论】:

    标签: php laravel saml saml-2.0


    【解决方案1】:

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

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

    如果是使用用户名/密码的传统身份验证,一旦密码匹配,您将为他们创建会话。在这种情况下,密码检查由 Microsoft 完成,并通过向您的回调发送 SAML Response 告诉您的应用程序成功。

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

    SAML Response 样本可用here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-11
      • 1970-01-01
      • 2020-07-17
      • 2013-06-12
      • 1970-01-01
      • 2014-10-30
      • 1970-01-01
      • 2014-12-17
      相关资源
      最近更新 更多