如何使用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地址。

参考:

https://www.cloudera.com/documentation/data-science-workbench/1-2-x/topics/cdsw_external_authentication.html#saml

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实操

原文发布于微信公众号 - Hadoop实操(gh_c4c535955d0f)

原文发表时间:2018-03-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏用户2442861的专栏

poll()函数总结

http://www.cnblogs.com/Anker/archive/2013/08/15/3261006.html

10120
来自专栏Java帮帮-微信公众号-技术文章全总结

day07.HDFS学习【大数据教程】

分而治之:将大文件、大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析;

27240
来自专栏Hadoop实操

Cloudera Manager首页

当你从Cloudera Manager进入“主页 -> 状态”时,会看到如下页面,实际也就是Cloudera Manager的主页。

595110
来自专栏武军超python专栏

2018年8月15日UDP编程和面向对象的TCP编程

TCP协议:(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议 UDP协议:(U...

11650
来自专栏Python攻城狮

TFTP客户端1.TFTP协议介绍2.TFTP下载过程相关代码

TFTP(Trivial File Transfer Protocol,简单文件传输协议)

18320
来自专栏王磊的博客

entity framework使用技巧

1、无需先查询数据的修改方法 // 将创建的data实体添加到ObjectContext db.Data.Attach(data); // 手动设置状态为修改 ...

27950
来自专栏流媒体人生

关于Wince进程外组件~

1. Minimal COM提供最基础的COM开发接口(API),每个com对象的创建大概需要10~20K。

9210
来自专栏专注研发

HDFS的WEB页面访问常见问题

本文基于HADOOP-3..1.0,Cecntos7.0环境下进行测试,所以遇到很多新鲜的问题;

2.4K10
来自专栏码字搬砖

解决spark streaming重复提交第三方jar包问题

背景: 由于spark streaming每次提交都需要上传大量jar包到hdfs,为节约HDFS资源,现只存一份来解决这个问题

33930
来自专栏java一日一条

HDFS知识点总结

HDFS是什么:HDFS即Hadoop分布式文件系统(Hadoop Distributed Filesystem),以流式数据访问模式来存储超大文件,运行于商用...

13320

扫码关注云+社区

领取腾讯云代金券