首页 > 解决方案 > ADFS Server 2016 上关于 Oauth2 的几个问题

问题描述

我已经习惯使用 ADFS 很长时间了,最​​近我被要求在 ADFS 上使用 Oauth2 进行概念验证。通过术语挣扎,我设法设置了大多数东西,但我仍然有一些未解决的问题。希望有人可以阐明这些...

对于 SAML / WS-Fed 依赖方,可以使用 Set-AdfsRelyingPartyWebContent 设置自定义 Web 内容。这对于在应用程序组中创建的 web api 依赖方也可能吗?

使用客户端凭据授予流程时,是否可以向使用 client_id / client_secret(ADFS 术语中的服务器应用程序)身份验证的客户端添加声明?

即使在 web api 应用程序上设置了“IssueOAuthRefreshTokensTo”“AllDevices”,我仍然没有收到刷新令牌。我在这里想念什么?

在例如 jwt.io 上发布我们的 ADFS 颁发的令牌时,我收到“签名验证”错误。我们如何解决这个问题?

我们想为访问令牌设置一个受众,因此应用程序可以使用受众而不是使用 appid 来验证它们是否可以使用令牌。我们可以修改观众吗?

add-adfsclient 有什么作用?它是否创建了一个 client_id,然后可以将其链接到依赖方(使用 Grant-AdfsApplicationPermission),从而为现有的依赖方启用 OAuth2?

在为服务器应用程序配置广告用户主体并将“密码”用作授权类型和客户端凭据授权流程时,我似乎找不到正确的语法,因为 ADFS 总是给出错误“MSIS9622:客户端身份验证失败。请验证为客户端身份验证提供的凭据是否有效。'。我对用户名使用了语法“user@fqdn”。

谢谢你在这里帮助我!

标签: oauth-2.0openid-connectadfsadfs4.0

解决方案


让我尝试解决这些问题。

在 ADFS 中,OIDC 应用程序和 WS-Fed/SAML RP 完全不同。你不能混搭。

jwt.io 有一个签名错误,因为它不知道 .well-known 端点来获取密钥。参考这个

要获得额外的声明,您需要添加一个 API,因为这是声明规则的唯一位置。

要获取刷新令牌,您需要一个“offline_access”范围。

对于资源所有者密码,用户名和密码是单独的字段。参考这里

随时提出更多问题。只是扩大你的问题。

此外,样品在这里。查看 LHS 上的菜单。

更新

“可以在每个依赖方的基础上修改 Web 内容”是什么意思?

回覆。jwt.io,读这个

有关刷新令牌,请阅读。ADFS 似乎没有遵循这里的规范。


推荐阅读