在API Rest上进行SAML身份验证,打开身份验证页面

在API Rest上进行SAML身份验证,打开身份验证页面,rest,api,authentication,single-sign-on,saml,Rest,Api,Authentication,Single Sign On,Saml,我对SAML非常陌生,我必须建立一个SAML认证系统。 我们正在开发API平台和Angular 7+ 一切正常,API使用SAML对SSO进行身份验证,客户端使用JWT对API进行身份验证 但问题是,当用户未通过SSO身份验证时,如何告诉客户端“重定向用户或打开弹出窗口”到SSO身份验证页面 我搜索了一些答案,但看起来SAML身份验证在RESTAPI世界中并不是很有名 提前感谢。我不确定SAML是否是为了应对API。据我所知,它是设计用来与网页 您不能返回HTTP401并将错误处理留给客户端吗?

我对SAML非常陌生,我必须建立一个SAML认证系统。 我们正在开发API平台和Angular 7+

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

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

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


提前感谢。

我不确定SAML是否是为了应对API。据我所知,它是设计用来与网页

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

编辑: 在我看来:

  • 客户端发送不带Auth头的REST请求(JWT)
  • API使用401和类似于
    {“error”:“auth required”,“url”:“SSO_http_url”}
    的正文进行回复,而不与SSO联系
  • 客户端必须处理错误-将用户重定向到SSO服务并获取JWT令牌
  • 客户端发送具有有效身份验证标头(JWT)的新请求

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

    以下是步骤:

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

    我希望它能起作用。嗨,谢谢你的回答。问题是,如果标头中没有授权令牌,API将尝试登录。因此,它将向客户端发送301。但是处理301是不可能的。我想我没有正确地理解这个问题。如果用户未提供授权令牌,API将尝试代表用户登录SSO?301由SSO服务返回到API服务器?当我们尝试对SAML进行身份验证时,它会将我们重定向到SAML登录系统(如登录表单),因为它使用302(不是301,抱歉)。我添加了一个答案,也许有一种方法可以满足我的需求。请随意发表你的意见。