我在本地主机中有一个 VueJs 应用程序,它使用 oidc-client.js
库来登录到另一个域中生产中的 IdentityServer4
服务器。
登录后,IdentityServer 将我重定向到 VueJs 应用程序,然后我调用方法 signinRedirectCallback()
,但是 oidc-client 方法 getUser()
没有给出给我用户信息。
如果我检查 LocalStorage,我可以看到 oidc.user:IdentityServer4Url
值,我可以在其中看到用户的所有信息(access_token、id_token、profile ecc...),并且我'设置 Cookie“idsrv”、“idsrv.session”、“ARRAffinity”。
如果我在同一个域中尝试该应用程序,它就可以工作。 是否可以拥有本地主机应用程序并登录到另一个域? 谢谢
最佳答案
您绝对可以将您的身份服务器放在不同的域中,而且几乎大多数大型 IDP(身份提供者)都将位于不同的域中。
当你说你有本地存储的信息时,你确定访问 token 与你在 singin 响应 url 中收到的相同吗?在本地存储中,您会看到一个名为“expires_at”的属性,我想,看看该值是否有效。
https://github.com/IdentityModel/oidc-client-js/blob/dev/src/UserManager.js#L595
如果一切正常,我想不出它不应该检索的任何其他原因。
另一种可以帮助您的调试技术是?进入你的node_modules文件夹,找到oidc-cient-js文件夹,将package.json文件中的main属性从oidc-client.min.js修改为oidc-client.js,这样就可以断点调试了步骤并找出发生了什么。
希望这对您有所帮助。
关于c# - 使用不同域中的 oidc-client 和 identityServer4 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57783893/