如何使用SAML配置CDSW的身份验证
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢
1.文档编写目的
在前面Fayson介绍了《如何使用Shibboleth搭建IDP服务并集成OpenLDAP》和《如何使用SAML配置Cloudera Manager的身份验证》,通过Shibboleth的IDP服务提供SAML认证服务,本篇文章主要介绍如何使用SAML配置CDSW的身份验证。下图为CDSW集成SAML认证流程。
- 内容概述
1.环境准备
2.CDSW配置SAML及注册IDP
3.登录验证
4.总结
- 测试环境
1.CDSW版本为1.2.2
2.Shibboleth IDP版本为3.3.2
3.CDH5.13.1
4.Redhat7.2
2.环境准备
1.获取IDP服务的metadata.xml文件
通过如下地址获取IDP服务的shibboleth.xml文件
http://{idp-server-hostname}/idp/shibboleth
将shibboleth.xml文件中有关ArtifactResolutionService和SingleSignOnService标签的Location地址由https修改为http
注意:这里需要注意的是需要将下载的shibboleth.xml文件中部分标签修改为”<md:”,该文件在配置CDSW SAML时会用到。
2.在IDP服务器上使用openssl命令将backchannel.p12转成成private key秘钥文件
使用openssl命令通过pkcs12密钥文件生成private key密钥文件
cd /opt/shibboleth-idp/credentials
openssl pkcs12 -in idp-backchannel.p12 -nocerts -out idp-backchannel.pem
openssl rsa -in idp-backchannel.pem -out private.key
(可左右滑动)
将该目录下的的idp-backchannel.crt和private.key文件下载至本地客户端,在配置CDSW秘钥时会使用。
3.CDSW配置SAML
1.使用管理员登录CDSW,点击“Admin”
2.点击“Admin”->“Security”,进入外部身份验证配置界面
SAML认证涉及到的配置内容:
完成以上配置后,点击“Update”即可,不需要重启CDSW服务。
3.在浏览器访问CDSW地址有如下显示
由于CDSW服务未在IDP服务注册,所以访问有限制。
4.向IDP注册CDSW服务
1.编写CDSW服务的cdsw_saml_metadata.xml元数据文件,该文件主要是用于向IDP服务注册CDSW,文件内容如下:
由于CDSW服务的/api/v1/saml/metadata接口未提供完整的Metadata数据,所以这里我们使用在线工具https://www.samltool.com/sp_metadata.php生成CDSW的Metadata数据文件。
生成的cdsw_saml_metadata.xml文件内容如下:
2.将生成的cdsw_saml_metadata.xml文件,上传至IDP服务的/opt/shibboleth-idp/metadata目录下
3.编辑/opt/shibboleth-idp/conf/metadata-providers.xml,在MetadataProvider标签内增加如下配置
<MetadataProvider id="LocalMetadata" xsi:type="FilesystemMetadataProvider" metadataFile="/opt/shibboleth-idp/metadata/cdsw_saml_metadata.xml"/>
(可左右滑动)
4.编辑/opt/shibboleth-idp/conf/attribute-filter.xml,将内容修改为如下配置
<AttributeFilterPolicy id="example1">
<PolicyRequirementRule xsi:type="Requester" value="https://cdh3.itc.cmbchina.cn/idp/shibboleth" />
<AttributeRule attributeID="eduPersonPrincipalName">
<PermitValueRule xsi:type="ANY" />
</AttributeRule>
<AttributeRule attributeID="uid">
<PermitValueRule xsi:type="ANY" />
</AttributeRule>
<AttributeRule attributeID="mail">
<PermitValueRule xsi:type="ANY" />
</AttributeRule>
</AttributeFilterPolicy>
(可左右滑动)
主要修改PolicyRequirementRule属性的value值为EntityID值。
5.修改完以上配置后,重新构建IDP包及重启Tomcat服务
[root@cdh3 conf]<20180306 19:57:17># cd /opt/shibboleth-idp/bin/
[root@cdh3 bin]<20180306 19:57:32># ./build.sh
[root@cdh3 bin]<20180306 19:57:51># cd /opt/apache-tomcat-8.5.28/bin/
[root@cdh3 bin]<20180306 19:23:28># sh shutdown.sh
[root@cdh3 bin]<20180306 19:23:48># sh startup.sh
(可左右滑动)
5.登录验证
1.在浏览器输入CM地址,重定向到IDP服务的登录界面
2.在登录界面输入LDAP用户账号和密码,我们使用admin用户登录测试
点击登录跳转到如下界面
点击“Accept”,认证成功进入CDSW主页
至此就完成了CDSW的SAML的身份验证配置。
6.验证CDSW功能
1.选择“testproject”工程,并启动一个Session
2.成功执行示例代码
7.总结
- CDSW需要配置IDP服务提供者的shibboleth.xml、证书信息及EntityID等信息
- 完成CDSW的SAML配置后,需要将CM的cdsw_saml_metadata.xml注册到IDP服务,并配置IDP服务的属性解析,否则无法将用户信息返回给Cloudera Manager服务。
- 在这里CDSW的接口未提供完成的cdsw_saml_metadata.xml配置文件,需要我们自己手动的创建该Metadata。
- 需要注意的是IDP服务提供的shibboleth.xml配置文件,需要修改为SAML2.0支持的格式,配置文件具体修改可参看如下GitHub地址。
参考:
Metadata.xml配置文件GtiHub地址:
https://github.com/fayson/cdhproject/blob/master/samldemo/cdsw_saml_metadata.xml
https://github.com/fayson/cdhproject/blob/master/samldemo/shibboleth.xml
提示:代码块部分可以左右滑动查看噢 为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操
- tomcat请求处理分析(六)servlet的处理过程
- FFmpeg菜鸡互啄#第1篇#一些基本概念
- FFmpeg菜鸡互啄#第2篇#配置VS开发环境
- FFmpeg菜鸡互啄#第3篇#视频解码
- FFmpeg菜鸡互啄#第4篇#音频解码
- FFmpeg菜鸡互啄#第5篇#视频帧格式转换
- tomcat请求处理分析(三) 绑定本地端口监听请求
- 利用FFmpeg对火眼一体摄像机的回调数据进行处理:YUV转H264,H264封装flv,所有输入都是在内存中。
- MySQL 传统复制中常见故障处理和结构优化案例分析
- sql带条件查找最小缺失编号
- activiti学习笔记(六) 监听器
- activiti学习笔记(五) 流程部署
- 打开文件open()函数的使用方法详解
- activiti学习笔记(四) 配置器
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 简述PHP7.4 新特性和废弃的功能
- laravel5.1框架下的批量赋值实现方法分析
- Laravel框架环境与配置操作实例分析
- 记Laravel调用Gin接口调用formData上传文件的实现方法
- Laravel框架视图和模型操作方法分析
- 接口测试框架实战(六) | 配置的数据驱动
- PHP连续签到功能实现方法详解
- PHP实现发送微博消息功能完整示例
- php实现快速对二维数组某一列进行组装的方法小结
- PHP实现提取多维数组指定一列的方法总结
- PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
- Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
- Laravel框架下载,安装及路由操作图文详解
- PHP实用小技巧之调用录像的方法
- Laravel重定向,a链接跳转,控制器跳转示例