微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WSO2 API Manager 4.0.0 Key Manager 与 Keycloak 的集成不起作用

如何解决WSO2 API Manager 4.0.0 Key Manager 与 Keycloak 的集成不起作用

我已经按照本教程 https://apim.docs.wso2.com/en/latest/administer/key-managers/configure-keycloak-connector/ 将 Keycloak 作为密钥管理器与 WSO2 API Manager 4.0.0 集成,一切都按照描述完成,但是当我尝试获取 client_credentials access_token 时,WSO2 http 客户端出现错误 - Keycloak交流,查看与假装有关的痕迹。错误是这样的:

Caused by: feign.RetryableException: Hostname localhost not verified:
    certificate: sha256/7mHCBc7ms9yqA/gz+nIRA9cUTRqrEgK3j9eX9fmpDZ0=
    DN: CN=localhost
    subjectAltNames: [] executing POST https://localhost:8443/auth/realms/master/clients-registrations/openid-connect

正如错误跟踪中所描述的,它是一个主机名验证,因为主机名是 localhost。为了绕过这个,我将主机名验证设置为禁用,但它仍在发生。我不知道如何跳过此验证。这些是我的配置文件片段:

deployment.toml

[transport.passthru_https]
sender.hostname_verifier = "AllowAll"

[transport.passthru_https.sender.parameters]
HostnameVerifier = "AllowAll"

[transport.passthru_http]
sender.hostname_verifier = "AllowAll"

api-manager.bat

set CMD_LINE_ARGS=%CMD_LINE_ARGS% -Djava.endorsed.dirs=%JAVA_ENDORSED% -Dorg.opensaml.httpclient.https.disableHostnameVerification=true -Dhttpclient.hostnameVerifier="AllowAll" 

在 WSO2 安装中的 client-truststore.jks 中也导入了这个 localhost 证书。

知道如何跳过此主机名验证吗?

解决方法

WSO2 API 管理器使用 Feign OKHTTP 客户端与 Keycloak 服务器进行通信。 OKHTTP 客户端需要具有与 SAN 相同的 CN 条目的公共证书。

Keycloak 的默认公共证书不包含任何 SAN 值。因此,在尝试与 Keycloak 通信时,Feign 客户端开始抛出 SSL 异常。为了解决这个问题,您可以按照此 documentation 为 Keycloak 创建一个新的密钥库,并将该证书导入 API 管理器的 client-truststore.jks。提到的 keytool 命令使用 SAN 条目生成密钥库和证书。

给定的是来自 API Manager Docs 的相同 Keytool 命令。

keytool -genkey -alias server -keyalg RSA -keysize 2048 -validity 3650 -keystore application.keystore -dname "CN=localhost,OU=Support,O=WSO2,L=Colombo,S=Western,C=LK" -storepass password -keypass password -noprompt -ext SAN=dns:localhost

此外,上述 hostname_verifier 配置不适用于禁用 OKHTTP 客户端中的主机名验证。

这不是您所面临行为的绝对解决方案,但您可以使用这种替代方法(为 Keycloak 生成新的密钥库)来克服它。

here 收集到的与 OKHTTP 客户相关的点很少。希望这可以帮助您通过替代方法解决该问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。