当前位置: 首页 > 编程语言 > C#

从.Net应用程序(控制台)访问kerberos保护的webhdfs分享

时间:2023-04-10 19:52:57 C#

C#学习教程:从.Net应用程序访问受kerberos保护的webhdfs(控制台)谁能帮我这个?以下是浏览器访问/webhdfs/v1/prod出现HTTPError401for"http://****.****/webhdfs/v1/prod/snapshot_rpx/archive?op=LISTSTATUS&user.name=us"/snapshot_rpx/archive时出现问题。原因:向此URL发出请求需要验证.Net代码HttpWebRequesthttp=(HttpWebRequest)WebRequest.Create(requestUri);http.Timeout=超时;http.ContentType=contentType;字符串responseData=string.Empty;使用(WebResponseresponse=http.GetResponse()){Streamstream=response.GetResponseStream();StreamReadersr=newStreamReader(stream);responseData=sr.ReadToEnd();}返回响应数据;[重要说明]此答案适用于将LinuxKDC(通常是MITKerberos)用于普通Hadoop集群。对于依赖MicrosoftActiveDirectoryKDC的Cloudera集群,任何.NetHTTP连接器都可以使用MicrosoftSSPI协议实现SPNEGO(太无聊了...)~~~~我知道从Microsoft世界访问WebHDFS的唯一方法是丑陋和复杂的解决方法:选项1:通过GUI创建票证,并告诉Java在默认缓存中获取它选项2:告诉Java使用密钥表文件自动创建自己的票证(必须在Linux上使用ktutil创建;不是在Windows包中这样的实用程序),并忽略缓存所以最后它是一个Java问题。并且设置有效的Kerberos配置很棘手(请参阅“CrazyBeyondGates”,当前有关Hadoop生态系统中Kerberos实施问题的参考站点)抱歉回复晚了。ApacheKnox实际上可能提供您正在寻找的解决方案。它使REST客户端免受Hadoop集群本身安全性细节的影响。集群可以随意从安全状态变为不安全状态,客户端将以相同的方式向Knox网关进行身份验证。问题是您希望如何向Knox进行身份验证。典型的方法是通过HTTPBasicAuth针对LDAP(可能是AD)。但是,还有其他身份验证/联合提供程序也允许其他机制。基于标头的预验证SSO提供程序是一种适用于Web应用程序类型用例的方法。请参阅:http://knox.apache.org/books/knox-0-7-0/user-guide.html#Preauthenticated+SSO+Provider,在应用程序和ApacheKnox之间进行SSL相互身份验证(http://knox.apache.org/books/knox-0-7-0/user-guide.html#Mutual+Authentication+with+SSL)结合使用Knox作为Hadoop的可信代理来联合应用程序的一种有效方法。在程序中建立。即将发布的v0.8.0版本还引入了更多的SSO机制。HadoopREST客户端不应该知道有关Hadoop集群的很多细节,当Hadoop的灵活性允许服务移动或以不同方式启用安全性时,所有客户端都会中断。对许多人来说,在每个浏览器上强制使用SPNEGO是一个显示拦截器。ApacheKnox以RESTAPI开发人员/消费者习惯的工作方式解决了这些问题。以上就是C#学习教程:从.Net应用程序(控制台)访问受kerberos保护的webhdfs,分享全部内容。如果对你有用,需要了解更多C#学习教程,希望大家多加关注——本文来自网络合集,不代表立场,如涉及侵权,请点击有权联系管理员删除。如需转载请注明出处: