来自 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(发行者)声明计算出在运行时使用哪个。
我的公司使用几个不同的提供商(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(发行者)声明计算出在运行时使用哪个。