我们所处的场景是我们自己开发的单页应用程序(后面是https服务器API的AngularJS前端)打开了另一个 由我们的合作伙伴在新的浏览器标签中开发的Web应用程序,该第二个Web应用程序需要访问由我们开发的https服务器API。
在寻找可能的解决方案之后,我们现在使用IdentityServer4创建了概念证明,其中,第二个Web应用程序被配置为具有“ authorization_code”授权类型的客户端。当所有应用程序都在同一域上运行时,第三方应用程序可以访问我们的https服务器API,而不会提示您输入用户名和密码。
此概念证明中第二个Web应用程序的实现非常类似于bayardw为帖子提供的解决方案
Identity Server 4 Authorization Code Flow example
我的问题是:
当-在生产中时-第二个Web应用程序不再与我们的应用程序和我们的https服务器API共享域时,访问我们的http服务器API时是否会提示第二个Web应用程序调用用户名和密码?
答案 0 :(得分:0)
似乎,您缺少一些重要的东西。
首先,任何API都不应询问用户名和密码。相反,您的应用应该在每个请求中放入一个令牌,API应该验证该令牌。应该询问用户凭据的位置是用户何时访问您的(或第三方)Web应用程序。然后,身份提供者创建一个身份令牌(通常将其保存在Cookie中并在应用程序中使用)和访问令牌(将提供给API)。
每个令牌都是针对在IdP中预先注册的特定客户端(应用)发行的。
可能当两个应用程序托管在同一域中时,它们共享了身份Cookie和客户端ID,这是不正确的。
在生产场景中,您必须单独注册应用程序。其余所有功能都可以正常工作(如果您遵循我在开始时简要介绍的例程)。
答案 1 :(得分:0)
选择自己通过其他渠道的反馈来发布答案:
这归结为对IdP的会话跟踪。如果使用cookie来跟踪IdP会话,则该行为会受到使用会话cookie还是持久性cookie的影响。
总的来说,我发现Robert Broeckelmann在medium.com上有不错的文章。