Hashicorp Vault OIDC 身份验证方法与 Azure AD 错误验证签名
Posted
技术标签:
【中文标题】Hashicorp Vault OIDC 身份验证方法与 Azure AD 错误验证签名【英文标题】:Hashicorp Vault OIDC auth method with Azure AD error validating signature 【发布时间】:2020-05-17 07:14:39 【问题描述】:我正在尝试使用 JWT/OIDC authentication method 并使用 Azure AAD 作为提供程序来保护保管库 UI 和命令行登录。我正在关注文档,但我以以下错误消息结尾:
Token verification failed. error validating signature: failed to verify signature: failed to verify id token signature
这是我设置身份验证方法所遵循的步骤
-
创建了允许我的重定向 URL 的 Azure 应用注册
-
http://localhost:8250/oidc/callback
https://hostname:port_number/ui/vault/auth/oidc/oidc/callback
Group.Read.All
权限
从门户生成了一个秘密及其令牌
我正在使用 v2.0 端点https://login.microsoftonline.com/my_tenant_id/v2.0
我将 oidc 范围指定为 https://graph.microsoft.com/.default
我用"groupMembershipClaims": "All",
修改了应用清单
然后我使用金库上的令牌身份验证登录并发出以下命令行。
vault auth enable oidc
vault write auth/oidc/config @azuread-auth-config.json
# Success! Data written to: auth/oidc/config
vault write auth/oidc/role/default @azuread-default-role-config.json
azuread-auth-config.json
文件有以下内容
"oidc_discovery_url": "https://login.microsoftonline.com/my_tenant_id/v2.0",
"oidc_client_id": "my_client_id",
"oidc_client_secret": "my_client_secret",
"default_role": "default"
azuread-default-role-config.json
文件有以下内容
"allowed_redirect_uris": [
"http://localhost:8250/oidc/callback",
"https://my_hostname/ui/vault/auth/oidc/oidc/callback",
"http://localhost:8200/ui/vault/auth/oidc/oidc/callback"
],
"groups_claim": "groups",
"oidc_scopes": [
"https://graph.microsoft.com/.default"
],
"policies": [
"default"
],
"user_claim": "email",
"bound_audiences": [
"my_client_id"
],
"verbose_oidc_logging": "true"
添加"verbose_oidc_logging": "true"
行仅用于调试目的。
我遵循的登录过程
在 Vault UI 上启动登录过程后,我会被重定向到 URL
https://login.microsoftonline.com/my_tenant_id/oauth2/v2.0/authorize?client_id=my_client_id&nonce=5e52640c66c2dsf64f5ds3f1sd46dc6717&redirect_uri=https%3A%2F%2Fmy_hostname%2Fui%2Fvault%2Fauth%2Foidc%2Foidc%2Fcallback&response_type=code&scope=openid+https%3A%2F%2Fgraph.microsoft.com%2F.default&state=744a03304e71ed7e4dedgrd3541544
然后我收到登录成功消息,它会自行关闭窗口
我也在跟踪保管库服务器上的日志,我可以看到已经生成了一个令牌。如果我继续https://jwt.ms 并粘贴 JWT 令牌,它会被解密,我可以识别正确的值。 我可以在我的用户下使用正确的租户 ID 和客户端 ID 看到大约 90 个组。
如果我使用命令行vault login -method oidc role=default
尝试登录过程,我会收到相同的错误消息。
Code: 400. Errors:
* Token verification failed. error validating signature: failed to verify signature: failed to verify id token signature
【问题讨论】:
请看这个帖子***.com/questions/54979408/… @TonyJu 是的,这是真的,在 jwt.io 上,我们必须指定 HS256 算法而不是 MS 文档中提到的 RS256 才能查看签名验证。我尝试使用设置jwt_supported_algs
强制 HS256,但它似乎不是插件 vaultproject.io/api/auth/jwt/… 支持的算法。
我的配置与您完全相同,但我没有收到电子邮件声明 Vault:claim "email" not found in token
。我注意到,"user_claim": "email",,
行中有双逗号,请尝试修复它,可能解析不好,并且角色在 web ui 中不可见。
@MUHAHA 我仔细检查了一下,我的设置 json 中没有双逗号。它只是在问题中。
@DoRivard 你有没有找到解决方案?在同样的问题上磕磕绊绊
【参考方案1】:
我遇到了同样的麻烦。从 Azure 中删除应用程序并重新配置它会有所帮助。
我的 Vault 角色配置有效:
vault write auth/oidc/role/<< oidc_role_name >> -<<EOF
"allowed_redirect_uris" : ["http://localhost:8250/oidc/callback","https://vault.example.com:8200/ui/vault/auth/oidc/oidc/callback"],
"user_claim" : "sub",
"policies" : "default",
"oidc_scopes" : "https://graph.microsoft.com/.default,profile,email",
"verbose_oidc_logging" : "true"
在 Azure API 权限中我有:
电子邮件 Group.Read.All GroupMember.Read.All openid 个人资料 User.Read 为我的域授予的一切令牌配置: 声明:
电子邮件(类型:ID) 电子邮件(类型:访问) 组(类型:ID、访问、SAML) upn(类型:ID) upn(类型:访问)身份验证: 隐式授权:
访问令牌 ID 令牌【讨论】:
以上是关于Hashicorp Vault OIDC 身份验证方法与 Azure AD 错误验证签名的主要内容,如果未能解决你的问题,请参考以下文章
在 AWS EKS 上使用 Kubernetes 身份验证方法部署 Hashicorp Vault 时出现证书错误