这是我目前的设置:
- 身份服务器4
- API(承载认证)
- SPA 页面(oidc-client 隐式流重定向到 IdentityServer4 快速入门 UI)
- 本机应用程序(用 C# 编写)
本机应用程序已经拥有用户凭据。我想从本机应用程序提供到 SPA 页面的 Web 链接,但我不想在导航到 Web 时强制用户再次登录。相反,我想将他们当前的会话移动到网页。
是否可以将访问令牌“注入”到 oidc-client 中?(使用 url 片段)。或者是否有任何其他流程或方法可以使这项工作?
这是我目前的设置:
本机应用程序已经拥有用户凭据。我想从本机应用程序提供到 SPA 页面的 Web 链接,但我不想在导航到 Web 时强制用户再次登录。相反,我想将他们当前的会话移动到网页。
是否可以将访问令牌“注入”到 oidc-client 中?(使用 url 片段)。或者是否有任何其他流程或方法可以使这项工作?
一般来说,答案应该是:你走错路了。
看:您在本机应用程序中使用资源所有者密码流,这是错误的。它不是交互式的,这意味着不仅 IdP 可以访问凭据。通常,建议将这种流量用于测试目的等,而不是一般用途。非交互式流程的一个巨大限制是它不会创建用户会话。 如果您将本机应用程序切换到交互式流程,例如带有 PKCE 扩展的代码流程,它将创建会话。之后,只要身份服务器的会话 cookie 处于活动状态,您的其他应用程序就会自动获得身份验证。
注意:如果你不喜欢改进你的架构,你可以自由地做任何你喜欢的事情,包括在链接中提供一个令牌。该令牌对于调用 API 仍然有效。但这不是隐式流程,您将没有会话,也没有使用静默刷新功能的可能性。