使用ApacheKnox网关定制基于spring的RESTAPI
我正在尝试做一个POC,其中我需要通过ApacheKnox保护我的集群,我自己开发的RESTAPI将位于Knox后面。用户身份验证应该如何使用Knox Ranger,我将如何保护我的数据访问?您需要为Apache Knox的自定义REST API提供服务定义。这将使Knox能够:使用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或其他敏感内容,以便在适当时通过网关重定向客户端 有关如何提供服务定义,请参见《开发人员指南》中
元素,以指示实际基于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能够:
元素,以指示实际基于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>