Keycloak OIDC 在身份验证过程中验证自定义属性

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

我正在尝试使用 Keycloak 作为我的 OIDC 提供程序,用于 CSC API v2 的特定用例,其中在

8.4.2 oauth2/authorize
部分中,我们应该使用 CSC API 特定于授权的参数,例如
numSignatures
hashes
signatureQualifier

使用 Keycloak,我们可以定义新的客户端范围

service
credential
,并根据 CSC API 规范(使用用 Java 或 JavaScript 开发的自定义映射器)配置按要求运行的映射器。到目前为止,一切都很好。客户端可以使用这些范围并获取访问令牌。

但是,当我们发送带有自定义参数的身份验证请求时,我们如何配置或设置 Keycloak 以根据此类自定义参数做出决策?

典型的请求可能如下所示:

GET https://www.example.org/oauth2/authorize?
  response_type=code&
  client_id=<OAuth2_client_id>&
  redirect_uri=<OAuth2_redirect_uri>&
  scope=credential&
  code_challenge=K2-ltc83acc4h0c9w6ESC_rEMTJ3bww-uCHaoeK1t8U&
  code_challenge_method=S256&
  signatureQualifier=eu_eidas_qes&
  numSignatures=1&
  hashes=MTIzNDU2Nzg5MHF3ZXJ0enVpb3Bhc2RmZ2hqa2zDtnl4&
  hashAlgorithmOID=2.16.840.1.101.3.4.2.1&state=12345678

根据请求,我们想检查客户端/用户是否有权访问指定的

signatureQualifier
,否则拒绝。

执行此操作的正确方法是什么?我想检查更多自定义参数并根据它们的值决定。

我们是否应该使用 Keycloak Authentication SPI 来开发自定义验证器和自定义属性,以使其符合 CSC API 规范及其授权?

我还没有找到任何其他方法,我想确定这是在 Keycloak 中实现它的正确方法。

oauth-2.0 authorization keycloak openid-connect digital-signature
1个回答
0
投票

是的,您需要实现自定义

Authenticator
并定义自定义 AuthenticationFlow 或修改现有的。 验证参数和用户权限后,您可以使用
*Mappers
将这些验证值映射到访问令牌中。

请参阅:使用自定义数据扩展 keycloak 令牌

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