TDH621开web安全情况下,执行curl API时返回302 Found

  API对接
内容纲要

概要描述

TDH 621 集群,对于服务的 web UI 添加了新的认证方式,直接去 curl 某些 API 会重定向到安全认证页面,从而返回302的错误。


详细说明

比如curl一个yarn的 API

curl -v http://172.22.22.161:8088/ws/v1/cluster/metrics

返回结果是 302 Found

file


问题原因

从结果中的 Location 部分来看,可知是跟安全相关的问题,准确来说是 TDH 621 开始 HDFS 跟 yarn 的 web 页面添加了认证参数,参考: http://172.16.1.168:8090/pages/viewpage.action?pageId=23483892

以下两个参数决定了是否要开启web安全认证

  • hadoop.security.authentication.web.oauth2.enabled
  • hadoop.security.authentication.web.cas.enabled

默认情况下,hadoop.security.authentication.web.oauth2.enabled为true,说明会开启oauth2认证,这导致了curl的时候重定向问题

file


解决方案一:关闭web安全

参数hadoop.security.authentication.web.oauth2.enabled跟hadoop.security.authentication.web.cas.enabled都改成false,即可关闭web安全,curl命令也能够拿到正确的结果
curl -v http://172.22.22.161:8088/ws/v1/cluster/metrics

(改成false的影响是安全扫描时候会爆出漏洞)

因为hdfs跟yarn都是使用的这两个参数,所以改完之后配置hdfs,如果只希望关闭yarn的web安全,那么直接去重启yarn即可,不需要重启hdfs


解决方案二:在curl命令中添加认证方式

首先,界面登录guardian fedration,然后申请一个oauth token,并且让federation server自动刷新这个token

file

刷新时间可以自己定义:
file

结果中查看Access Token,复制出来
file

然后curl的时候带上 Authorization: Bearer token的值 这个http header

比如:
curl -H ‘Authorization: Bearer IMcj9UBwE4XS2B7fsKFw-FEDERATION’ -v http://172.22.22.161:8088/ws/v1/cluster/metrics

即可获得正确的结果:

file

### 扩展知识

HTTP认证
常用的HTTP认证方式有:Basic认证、Digest认证、OAuth2认证。
Basic认证
curl --basic  -u user:password http://www.example.com/posts/1
Digest认证
curl --digest -u user:password http://www.example.com/posts/1
OAuth2认证
curl -u clientId:clientSecret -X POST -d "username=test&password=test&grant_type=password&scope=read" http://www.example.com/oauth/token
curl -H "Authorization: Bearer [bearer]" http://www.example.com/posts/1
### 详细说明

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。