【问题标题】:Apache Knox integration with Azure (HDP, OIDC)Apache Knox 与 Azure(HDP、OIDC)的集成
【发布时间】:2019-11-30 00:21:50
【问题描述】:

您好,我正在尝试将 Azure 用作 HDP 集群中 Apache Knox 的 OIDC。

我的环境:

  • Hortonworks Cloudbreak 2.9.1
  • HDP 3.1.4.0-315
  • Ambari 2.7.4.0
  • Apache Knox 1.0.0
  • 天蓝色

这是我的knoxsso.xml 拓扑:

<topology>
<gateway>
    <provider>
        <role>federation</role>
        <name>pac4j</name>
        <enabled>true</enabled>
        <param>
        <name>pac4j.callbackUrl</name>
        <value>https://<master_node_external_ip>:8443/clustername/knoxsso/api/v1/websso</value>
        </param>
        <param>
        <name>clientName</name>
        <value>OidcClient</value>
        </param>
        <param>
        <name>oidc.id</name>
        <value><application_id from Azure AD></value>
        </param>
        <param>
        <name>oidc.secret</name>
        <value><secret from Azure AD></value>
        </param>
        <param>
        <name>oidc.discoveryUri</name>
        <value>https://login.microsoftonline.com/<tenant_id from Azure>/.well-known/openid-configuration</value>
        </param>
    </provider>
</gateway>
<service>
    <role>KNOXSSO</role>
    <param>
        <name>knoxsso.cookie.secure.only</name>
        <value>false</value>
    </param>
    <param>
        <name>knoxsso.token.ttl</name>
        <value>100000</value>
    </param>
    <param>
        <name>knoxsso.redirect.whitelist.regex</name>
        <value>^https?:\/\/(<master_external_ip>|127\.0\.0\.1|0:0:0:0:0:0:0:1|::1):[0-9].*$</value>
    </param>
</service>
</topology>

这是我的集群拓扑 (default.xml):

<?xml version="1.0" encoding="UTF-8"?>
<topology>
        <gateway>
        <provider>
            <role>webappsec</role>
            <name>WebAppSec</name>
            <enabled>true</enabled>
            <param>
            <name>cors.enabled</name>
            <value>true</value>
            </param>
        </provider>
        <provider>
            <role>federation</role>
            <name>SSOCookieProvider</name>
            <enabled>true</enabled>
            <param>
            <name>sso.authentication.provider.url</name>
            <value>https://<master_node_external_ip>:8443/clustername/knoxsso/api/v1/websso</value>
            </param>
        </provider>
        <provider>
            <role>identity-assertion</role>
            <name>Default</name>
            <enabled>true</enabled>
        </provider>
        </gateway>
    <service>
    <role>WEBHDFS</role>
    <url>http://<webhdfs_private_fqdn>:50070/webhdfs</url>
    </service>
    ...
</topology>

添加到 Azure -> AAD -> 应用程序 -> 身份验证 -> 重定向 URI:

https://<master_node_external_ip>:8443/clustername/knoxsso/api/v1/websso

所以我尝试在浏览器中打开

https://<master_node_external_ip>:8443/clustername/default/webhdfs/v1/?op=LISTSTATUS

它将我重定向到https://login.microsoftonline.com/... 并要求输入用户名和密码,这正是我所期望的。但是登录成功后却报错:

AADSTS50011: The reply url specified in the request does not match the reply urls configured for the application: '<app_id>'.

部分登录网址包含重定向网址:

redirect_uri=https://<master_node_extenal_ip>:8443/clustername/knoxsso/api/v1/websso?pac4jCallback=true&client_name=OidcClient&scope=openid+profile+email&state=<some_random_string>

我做错了什么?

【问题讨论】:

    标签: azure azure-active-directory hdp knox-gateway apache-knox


    【解决方案1】:

    这应该在 Apache Knox 1.3.0 中解决,请参阅:https://issues.apache.org/jira/browse/KNOX-1191

    还有一篇 OIDC 社区文章不使用 AAD,但在此处显示 pac4j 提供程序中的 OIDC 配置配置:https://community.cloudera.com/t5/Community-Articles/Configure-Knox-with-OpenID-Connect/ta-p/247758

    【讨论】:

      【解决方案2】:

      Azure 中的重定向 URI 必须是:

      https://<master_node_external_ip>:8443/clustername/knoxsso/api/v1/websso?pac4jCallback=true&client_name=OidcClient
      

      现在我收到新错误:

      ERR_TOO_MANY_REDIRECTS
      

      有一个关于这个问题的帖子:mailinglist

      【讨论】:

        猜你喜欢
        • 2021-05-03
        • 2020-11-29
        • 2023-01-23
        • 1970-01-01
        • 2021-08-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多