gpt4 book ai didi

angularjs - 如何在移动应用程序中使用 SAML 身份验证?

转载 作者:搜寻专家 更新时间:2023-11-01 00:41:59 24 4
gpt4 key购买 nike

我试图了解 saml 身份验证流程如何在客户端(基于 AngularJS)、api 服务器(基于 Node 和护照)和 idp 存在于不同域中的移动环境中工作。

据我所知,一般做法是让服务器在不存在身份验证的情况下向客户端返回 401(即,客户端未在请求中包含不记名 token )。客户端理解 401 响应表示打开服务器上的登录端点。当登录端点打开时,它会调用身份验证提供程序(将用户重定向到身份验证提供程序的站点)并提供回调 URL。当用户进行身份验证时,auth 提供程序重定向到提供的回调 URL,这允许服务器从 auth 提供程序的响应中检索信息并构建某种类型的 token (例如 JWT),客户端可以使用(即包含在 header )在进行 REST 调用以识别自身时。

我的问题是:客户端如何从服务器获取 token ?因为我们处于基于重定向的身份验证流程中,所以我不能只从回调函数中返回 token 。这只会在浏览器中显示 token ,而不会将其交给客户端。服务器是否仅发出指向客户端域的 302 重定向并将身份验证 token 包含在 header 中?也许我不应该首先从客户端重定向到服务器,而是 window.open() 并使用 window.opener.postMessage 还是太过时了/移动设备不友好?

This问题讨论了针对 SAML IDP 的身份验证,但我有兴趣了解更多关于最后一个要点的详细信息以及它如何与基于 AngularJS 的客户端一起工作。

我在网上看到的许多示例要么是使用 OAuth/SAML ( passport-saml-example ) 的单个域,这避免了让客户端存在于单独域中的问题,要么是使用具有基本身份验证的两个域,这避免了重定向到某些第三方进行身份验证的问题,但我无法找到使用我尝试使用的所有点点滴滴的好例子。

This博客文章似乎非常接近我想要完成的事情(请参阅 googleSignInCallback)并像我想象的那样使用 302 重定向,但该解决方案依赖于明确知道要重定向到的客户端 URL,如果我想这样做似乎可能会有问题将来支持多种客户端类型(即 native 应用程序)。

最佳答案

最终,我能够通过让我的应用程序打开一个浏览器窗口(Cordova 的 InAppBrowser)到支持 SAML 的应用程序,让该应用程序完成正常的 SAML 流程,然后该支持 SAML 的应用程序生成一个 JWT .然后,我的移动应用程序能够使用 InAppBrowser 的 executeScript 功能从浏览器窗口中提取 JWT 字符串。然后我可以将该 JWT 字符串传递到我的 API 服务器,该服务器能够验证 JWT 是否已正确签名和受信任。

在我实现我的解决方案后,我看到 github 上有类似的功能可用:

https://github.com/feedhenry-templates/saml-service

https://github.com/feedhenry-templates/saml-cloud-app

https://github.com/feedhenry-templates/saml-cordova-app

希望这可以帮助其他任何试图处理此问题的人!

关于angularjs - 如何在移动应用程序中使用 SAML 身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31303050/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com