我们正在通过远程桌面服务运行应用程序。应用程序使用Negotiate
和 Windows 身份验证向在 WCF 下运行的 Web API 中间件进行身份验证。
我们现在有一个场景,中间件需要调用另一个服务并传递持有者令牌,以便它可以作为发出初始请求的用户运行。它还将使我们能够不必在每个请求上使用Negotiate
,这是相当昂贵的。
我们正在寻找一种可以制作 OAUTHgrant_type = client_credentials
的方法,但使用通过Negotiate
到我们的中间件进行身份验证的用户凭据。我还没有看到任何如何做到这一点的例子。我看到的所有示例都通过 client_id 和 client_secret 或在 HTTP Basic Auth 标头中传递用户凭据,但没有grant_type = client_credentials
示例,其中凭据是通过Negotiate
.
通常不支持在没有用户通过 OAuth 以交互方式登录的情况下以用户身份获取令牌,因为密码未知。
瞄准以下选项 1:
-
使用客户端凭据,然后通过其他参数(例如路径段(传递用户 ID - 最简单的选择是让下游服务支持此功能
-
通过 OAuth 登录并联合到使用 Windows 身份验证的身份提供程序 - 这可能是一个非常大的迁移工作 - 尽管这是将 OAuth 与 Windows 身份验证一起使用的首选方式