Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ApacheKnox网关定制基于spring的RESTAPI_Spring_Hadoop_Spring Security_Hortonworks Data Platform - Fatal编程技术网

使用ApacheKnox网关定制基于spring的RESTAPI

使用ApacheKnox网关定制基于spring的RESTAPI,spring,hadoop,spring-security,hortonworks-data-platform,Spring,Hadoop,Spring Security,Hortonworks Data Platform,我正在尝试做一个POC,其中我需要通过ApacheKnox保护我的集群,我自己开发的RESTAPI将位于Knox后面。用户身份验证应该如何使用Knox Ranger,我将如何保护我的数据访问?您需要为Apache Knox的自定义REST API提供服务定义。这将使Knox能够: 识别API的URL,将传入的请求发送到基于spring的服务,并能够将请求路由到它 知道如何从响应中重写特定内容,如URL或其他敏感内容,以便在适当时通过网关重定向客户端 有关如何提供服务定义,请参见《开发人员指南》中

我正在尝试做一个POC,其中我需要通过ApacheKnox保护我的集群,我自己开发的RESTAPI将位于Knox后面。用户身份验证应该如何使用Knox Ranger,我将如何保护我的数据访问?

您需要为Apache Knox的自定义REST API提供服务定义。这将使Knox能够:

  • 识别API的URL,将传入的请求发送到基于spring的服务,并能够将请求路由到它
  • 知道如何从响应中重写特定内容,如URL或其他敏感内容,以便在适当时通过网关重定向客户端
  • 有关如何提供服务定义,请参见《开发人员指南》中的

    一旦服务定义就位,您只需要在Knox拓扑中添加
    元素,以指示实际基于spring的服务运行的位置。应该是这样的:

    <service>
        <role>SERVICE</role>
        <url>http://url.to.your.service/v1/...</url>
    </service>
    
    
    服务
    http://url.to.your.service/v1/...
    
    《开发人员指南》的同一节中也介绍了这一点。 您还可能发现《用户指南》对拓扑中服务声明的其他示例很有帮助

    您可以查看这些示例,并将它们与那些现有服务的服务定义文件进行比较,以查看服务角色如何映射。这将帮助您为自己的服务做同样的事情

    有关身份验证的详细信息,请参阅《用户指南》中有关设置基于LDAP的身份验证的说明。您可能还对其他身份验证和联合提供程序实现感兴趣。您也可以在《用户指南》中找到它们


    也可以随意使用Apache Knox的开发人员或用户电子邮件列表。

    您需要为Apache Knox的自定义REST API提供服务定义。这将使Knox能够:

  • 识别API的URL,将传入的请求发送到基于spring的服务,并能够将请求路由到它
  • 知道如何从响应中重写特定内容,如URL或其他敏感内容,以便在适当时通过网关重定向客户端
  • 有关如何提供服务定义,请参见《开发人员指南》中的

    一旦服务定义就位,您只需要在Knox拓扑中添加
    元素,以指示实际基于spring的服务运行的位置。应该是这样的:

    <service>
        <role>SERVICE</role>
        <url>http://url.to.your.service/v1/...</url>
    </service>
    
    
    服务
    http://url.to.your.service/v1/...
    
    《开发人员指南》的同一节中也介绍了这一点。 您还可能发现《用户指南》对拓扑中服务声明的其他示例很有帮助

    您可以查看这些示例,并将它们与那些现有服务的服务定义文件进行比较,以查看服务角色如何映射。这将帮助您为自己的服务做同样的事情

    有关身份验证的详细信息,请参阅《用户指南》中有关设置基于LDAP的身份验证的说明。您可能还对其他身份验证和联合提供程序实现感兴趣。您也可以在《用户指南》中找到它们


    请随时联系Apache Knox的开发人员或用户电子邮件列表。

    这是我的2 xml文件,如果我有任何错误或需要做什么,请查看 **rewrite.xml

    
    **service.xml
    
    这是我的2 xml文件,如果我有任何错误或需要做什么,请查看 **rewrite.xml

    
    **service.xml
    
    让我们从service.xml文件开始。它应该看起来像下面更简单的版本。如果需要对请求或响应的特定部分应用特定规则,则只需要更复杂的表单。请注意,理想情况下只需要一条路由,但Knox中的
    **
    表示一个或多个路径级别(而不是零或多个)。因此,如果没有第一条路由,Knox将不会向服务的根/测试Web应用程序路径发送请求

    <service role="TEST_WEB_APP" name="Test_Web_App" version="0.0.1">
        <routes>
            <route path="/Test_Web_App/?**">
            <route path="/Test_Web_App/**?**">
        </routes>
    </service>
    

    让我们从service.xml文件开始。它应该看起来像下面更简单的版本。如果需要对请求或响应的特定部分应用特定规则,则只需要更复杂的表单。请注意,理想情况下只需要一条路由,但Knox中的
    **
    表示一个或多个路径级别(而不是零或多个)。因此,如果没有第一条路由,Knox将不会向服务的根/测试Web应用程序路径发送请求

    <service role="TEST_WEB_APP" name="Test_Web_App" version="0.0.1">
        <routes>
            <route path="/Test_Web_App/?**">
            <route path="/Test_Web_App/**?**">
        </routes>
    </service>
    

    嘿,我很感谢上面的链接真的帮了我很大的忙,我会再试一次,谢谢…:)嘿,我正试图扩展链接中提到的ServiceDeploymentContributorBase类,但我在UrlRewriteRulesDescriptor newRules=loadRulesFromClassPath()方面遇到了一些问题;但是没有名为loadRulesFromClassPath的函数定义,也没有关于如何使用重写描述符API的文档。下面还有一个问题,函数需要更多的参数,但在示例中没有提到。addRewriteFilter(上下文、服务、资源);addDispatchFilter(上下文、服务、资源);我已经联系了开发人员和用户邮件列表,但如果您了解一些相关信息,请帮助我…实际上没有java文档可用于此目的,这是我很困惑,而且我是hadoop和knox Gateway的新手。我认为我们需要更好地理解您为什么要扩展ServiceDeploymentContributorBase。我向您指出这一部分的意图是,现在有一种基于配置的方法,它在很大程度上消除了现在创建自己的贡献者的需要。我想知道这个机制是否不能用于您的用例,或者文档是否需要改进
    <rules>
        <rule dir="IN" name="TEST_WEB_APP/Test_Web_App" pattern="*://*:*/**/Test_Web_App/?{**}">
            <rewrite template="{$serviceUrl[TEST_WEB_APP]}/?{**}"/>
        </rule>
    
        <rule dir="IN" name="TEST_WEB_APP/Test_Web_App/query" pattern="*://*:*/**/Test_Web_App/{path=**}?{**}">
            <rewrite template="{$serviceUrl[TEST_WEB_APP]/{path=**}?{**}"/>
        </rule>
    </rules>