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

时间:2018-12-18 09:56:25

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

我真的是SAML的新手,我不得不建立一个SAML身份验证系统。 我们正在开发API平台和Angular 7 +。

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

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

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

谢谢。

2 个答案:

答案 0 :(得分:0)

我不确定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)的新请求

答案 1 :(得分:-1)

我也许找到了一种方法来做我想做的事情,我一定不能使用API​​作为桥梁从客户端向SAML验证用户身份,这会带来很多问题(重定向,Cors等)。

所以这是步骤:

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

我希望它能工作^^