我们有一个使用Angular构建的应用程序。然后应用程序触发后端REST api来显示数据。
问题是
该应用程序使用LDAP SSO身份验证来验证用户(这是公司内部的应用程序,因此没有外部用户)
步骤是
如果用户启动站点,它将重定向到WebSec登录名,其中用户提供用于验证的用户名和密码(隐式流程)。
成功通过身份验证后,我们将从WebSec访问JWT令牌,该令牌将存储在会话存储中,并将用作后端服务的“承载者”令牌。
后端服务具有其WebSec证书,可以在其一侧验证此JWT令牌,否则将以Authentication错误进行响应。
对于前端-我们正在使用Angular 对于后端-我们是Java,Sprint引导。
问题是
如果有人提供解决方案,我将不胜感激。
答案 0 :(得分:1)
隐式流的问题是URL中存在JWT令牌。隐式流可以在前端或后端中实现,不建议两者都使用,但是如果正确理解问题,则在前端中执行隐式流将具有更多漏洞,这就是您想要做的事情。
我将通过以下方式实现它。
答案 1 :(得分:0)
到目前为止,我看到的最好的方法是以下操作(我也按照您的描述运行了MS Single Sign-On服务器),但是我建议它像Discord那样做:
redirect_link
和application_id
重定向到SSO,并声明请求redirect_link
,但是您随机创建了application_id
,则您的SSO将重定向到code=$myCode
,可以是JWT或任何长字符串code
,并请求一个真实的身份验证承载令牌。如果这个链条都成功,那么您可以确定内部网络中的一切都很好。对于公司内部而言,这是一个足够好的方法。
对于外部使用,您可以在第1步和第2步中提供一个安全密钥,sso必须将其提供给前端产生的前端,以确保此重定向来自您的SSO。
编辑:有关加密的更多详细信息:
您的SSO可能使用HS512加密代码,该代码将被发送到客户端,然后再通过API再次发送到SSO。在这个周期中,如果SSO可以解密和验证它,并且该API是已知/允许的通信伙伴,则可以说所有方面都是受信任的。