mod_auth_openidc:如何从提供商的访问令牌获取声明?

问题描述 投票:0回答:1

我错过了

mod_auth_openidc
工作原理的一些非常基本的内容。

我正在使用Keycloak,如果我执行curl请求来获取令牌(换句话说,我使用用户名和密码登录),那么我会得到一个JWT。 JWT 有效负载的一部分包含:

"openid-connect" : {
  "roles": ["role-1", "role-2", ..."role-n"]
}

mod_auth_openidc
可能正在执行相同的请求,并返回相同的 JWT。然而,这些都没有传递到我的应用程序。我只能看到会话 Cookie (
mod_auth_openidc_session
),但没有 OIDC 标头或环境变量。

我错过了什么 - 我如何说服

mod_auth_openidc
将 Keycloak 角色(或其他任何内容)发送到应用程序?

apache mod-auth-openidc
1个回答
0
投票

我想通了。我正在使用 wiki 上的最小 PHP 应用程序进行测试。在我的 Apache 配置中,我允许未经授权访问此测试页面: <Location /oidctest.php> Require all granted </Location>

这行不通; 
mod_auth_openidc

认为不需要任何声明,因此不提供任何声明。如果我将

require
更改为更现实的内容:
Require claim "resource_access.openid-connect.roles:role-3"

然后一切都变得生动起来:PHP 测试页面显示了很多声明。

© www.soinside.com 2019 - 2024. All rights reserved.