来自 windows 服务的单点登录

Single sign from a windows service

我的公司使用几个不同的提供商(Azure、集成 Windows 身份验证、Open ID Connect)进行单点登录,除此之外。我们有一个在客户端服务器上运行的 windows 服务,并且定期对我们的 Web 应用程序进行 Web 服务调用。目前我们建议客户端为 windows 应用程序安装一个非 SSO 实例来调用 Web 服务。

我的问题是 window 服务是否有一种很好的方法来调用我们的 Web 应用程序的 SSO 实例,该实例适用于所有 SSO 提供商。

这感觉像是个问题,除非您在架构上针对它进行设计:

  • 您的网络应用应调用 Web API
  • Windows 服务应该调用同一个 Web API
  • Windows 服务调用 Web 应用程序不标准

在 OAuth 术语中:

  • Web 应用程序将使用授权代码流并获取包含已登录用户 ID 的令牌(子声明)
  • Windows 服务将使用 Client Credentials Flow 并获取仅包含客户端 ID 且不包含用户 ID 的令牌
  • 您的网站 API 需要处理这两种情况

感觉客户端应该只为 Windows 服务使用一个固定的 SSO 提供商。或者你根据访问令牌中的 iss(发行者)声明计算出在运行时使用哪个。