我们正在寻找一种方法,通过发送存储在数据库或 AD LDS 中的用户 UID,通过 Web 服务调用从 ADFS 2016 请求 JWT 令牌。令牌应包含完整的域用户名作为声明。AC# 服务会在没有用户 GUI 交互的情况下请求令牌(UID 由 ID 卡提供),然后将其转发到 Intranet Web 应用程序。
ADFS 2016 中的 OAuth 2.0 或 WS-Trust 1.3 是否可以做到这一点,涉及哪些步骤?
现在我已经尝试使用 OAuth 2.0(HTTP POST 到 /adfs/oauth2/token),但无法正确配置 ADFS(应用程序组、中继方等)并发送正确的 HTTP 参数以获取通过提供用户名/密码的令牌。
如果有人能指出我正确的方向,那就太好了。
编辑
更详细地描述我们想要实现的目标:
目标是创建一个处理 NFC 卡登录并将带有用户信息的 JWT 发送到任意 Web 应用程序的 Windows 服务。
C# windows 服务从 NFC 读卡器读取卡 UID。
Windows 服务通过提供卡 UID 从 ADFS 请求 JWT。这可以是 OAuth 或 WS-Trust,无论哪个有效。
ADFS 从机密数据库中查找卡 UID。数据库条目还包含用户名。然后它可以通过在 ADLDS 中查找域用户来进一步丰富这些数据。
ADFS 创建至少包含域用户名的令牌并将其发送回 C# windows 服务。无需用户与 ADFS 登录屏幕交互。
Windows 服务接收令牌并将其转发到预配置的 Web 应用程序登录处理程序。
Web 应用程序验证令牌签名并处理登录。
在这种情况下,凭证将仅是卡 UID。ADFS 可以做到这一点吗?如果没有,我的备份计划是直接在我的 Windows 服务中创建令牌。