【问题标题】:SAML Authentication on API Rest, open the authentication pageAPI Rest上的SAML Authentication,打开认证页面
【发布时间】:2018-12-18 09:56:24
【问题描述】:

我对 SAML 非常陌生,我必须设置一个 SAML 身份验证系统。 我们正在开发 API 平台和 Angular 7+。

一切正常,API 使用 SAML 向 SSO 进行身份验证,客户端使用 JWT 向 API 进行身份验证。

但问题是,当用户未通过 SSO 身份验证时,如何告诉客户端“将用户重定向或打开弹出窗口”到 SSO 身份验证页面。

我搜索了一些答案,但看起来 SAML 身份验证在 Rest API 世界中并不是很有名。

提前致谢。

【问题讨论】:

    标签: rest api authentication single-sign-on saml


    【解决方案1】:

    我不确定 SAML 是否用于处理 API。据我所知,它旨在与网页一起使用。

    您不能只返回 HTTP 401 并将错误处理留给客户端吗? REST 服务不应该将用户重定向到登录页面,因为它是资源,而不是视图解析器。

    编辑: 在我看来:

    1. 客户端发送不带 Auth 标头 (JWT) 的 REST 请求
    2. API 回复 401 和 {"error":"auth required","url":"SSO_http_url"} 之类的正文,无需与 SSO 联系
    3. 客户端必须处理错误 - 将用户重定向到 SSO 服务并获取 JWT 令牌
    4. 客户端发送带有有效 Auth 标头 (JWT) 的新请求

    【讨论】:

    • 您好,感谢您的回答。问题是,如果标头中没有授权令牌,API 将尝试登录。所以它会向客户端发送一个 301。但是处理301是不可能的。
    • 我认为我没有正确解决问题。如果用户未提供授权令牌,API 是否正在尝试代表用户登录 SSO? SSO服务返回301到API服务器?
    • 当我们尝试对 SAML 进行身份验证时,它会将我们重定向到 SAML 登录系统(如登录表单),因为它使用 302(不是 301,抱歉)。我添加了一个答案,也许是一种做我想做的事。欢迎发表您的意见。
    【解决方案2】:

    我可能找到了一种方法来做我想做的事,我不能使用 API 作为桥梁来验证从客户端到 SAML 的用户,他们会遇到很多问题(重定向、Cors 等)。

    以下是步骤:

    • 客户端尝试使用 JWT 令牌对 API 进行身份验证
    • 客户端未连接,API 向客户端返回 302 以重定向到 API SAML 身份验证系统。
    • API 将尝试对用户进行 SAML 身份验证(自动身份验证、重定向到登录表单等)
    • 登录成功后,API 将用户重定向到带有新 JWT Token 的客户端,以允许用户访问

    我希望它会工作^^

    【讨论】:

      猜你喜欢
      • 2018-03-17
      • 1970-01-01
      • 2012-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-14
      • 1970-01-01
      • 2014-05-31
      相关资源
      最近更新 更多