最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

使用开源IDP和SAML让SAP HANA XS App支持单点登录

[复制链接]
跳转到指定楼层
楼主
发表于 2014-9-29 16:57:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

单点登录(Single Sign On)简称为SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

         SAML(Security Assertion Markup Language)是一个XML框架,也就是一组协议和规范,可以用来传输企业用户身份证明, 主要是企业外的身份跨域传递。比如,公司(IDP)的用户要访问SAP HANA XS应用(sp),为了保证身份安全,我们可以采用除了加密签名等措施,还要采用SAML规范来传输,传输的数据以XML形式,内容符合SAML的推荐标准,这样我们就可以不要求idp和sp采用什么样的系统,只要求能理解SAML规范即可。下图阐述了利用SAML单点登录的原理。

1 用户想使用SP(可认为是SAP HANA XS App),在浏览器输入SP的URL。

2 SP将生成SAML 请求。

3 SP让浏览器重定向到IDP做认证。

4 IDP收到SAML请求检查用户是否已认证,并且在合法期内,否则IDP将要求用户将进行认证。

5 IDP生成SAML响应。

6 IDP将封装好的响应返回给浏览器,浏览器返回给SP。

7 SP验证SAML响应,该响应中包含用户的信息。

8 SP根据SAML响应,确定用户的合法性以及用户信息,同意用户登录。

本文将介绍如何利用开源软件Shibboleth作为IDP,让SAP HANA XS App支持单点登录。

ShibbolethIDP)端配置准备安装环境

1 准备安装环境所需要的域名,确保IDP服务器和SP服务器可通过域名互相进行通信。

2 端口80和443需要被开放(保证没有其他程序在占用),注意防火墙对端口访问权限的问题。

3 IDP服务器与SP服务器时钟是同步的。

IDP的安装

1 下载安装JDK1.5+,Tomcat6.0.17+,Apache2.2+,并确保JAVA_HOME环境变量的正确设置,这里我用的是JDK1.6,Tomcat6.0.29, Apache 2.2。

注:必须从http://httpd.apache.org/网站上下载包含SSL支持的Apache安装程序并安装。

2  下载IDP组件,下载之后解压并将解压之后的目录移动到你所要安装的目标目录。

(IDP下载地址为:http://shibboleth.internet2.edu/downloads/shibboleth/idp/latest/)

3 安装IDP 此时需要输入IDP home目录以及域名(不要输入IP)

4 将IDP_HOME/lib/endorsed下的所有包复制到TOMCAT_HOME/endorsed下,IDP_HOME和TOMCAT_HOME分别指IDP和TOMCAT的安装目录(如果TOMCAT根目录下没有endorsed文件夹则新建一个即可)。

5 使tomcat支持ssl传输

1)    下载tomcat6-dta-ssl-1.0.0.jar (asc)放到TOMCAT_HOME/lib/目录下。(tomcat7则需要不同的jar包)

         2)    在TOMCAT_HOME/conf/server.xml中增加如下的配置(在安装IDP过程中用到的密码替换掉PASSWORD):

<Connector port="8443"

protocol="org.apache.coyote.http11.Http11Protocol"

SSLImplementation="edu.internet2.middleware.security.tomcat6.DelegateToApplicationJSSEImplementation"

scheme="https"

SSLEnabled="true"

           clientAuth="true"

keystoreFile="IDP_HOME/credentials/idp.jks"

keystorePass="ASSWORD" />

6 部署IDP.war

创建TOMCAT_HOME/conf/Catalina/localhost/idp.xml文件并用以下代码替换其内容。

<Context docBase="IDP_HOME/war/idp.war"

privileged="true"

         antiResourceLocking="false"

antiJARLocking="false"

unpackWAR="false"

swallowOutput="true" />

7 加入以下行至Apache的配置文件httpd.conf中:
ProxyPass /idp/ ajp://localhost:8009/idp/

8 更改Tomcat的TOMCAT_HOME/conf/server.xml中的端口8009 AJP13连接器,我们将要增加request.tomcatAuthentication="false"和Address="127.0.0.1"让Apache允许发送用户名信息到IDP。

    <Connector port="8009"

    enableLookups="false" redirectPort="8443" protocol="AJP/1.3"

  • request.tomcatAuthentication="false" address="127.0.0.1" />

9 在Apache的httpd.conf或ssl.conf配置文件中定义以下程序,强制身份验证的时候访问RemoteUser处理程序。
    <Location /idp/Authn/RemoteUser>
AuthType Basic
AuthName "My Identity Provider"
AuthUserFile D:/opt/shibboleth-idp/credentials/user.db
require valid-user
    </Location>

10 用htpasswd命令创建一个或两个测试用户
htpasswd -c D:/opt/shibboleth-idp/credentials/user.db myself
htpasswd命令为Apache工具命令必须在命令行下进入到Apache安装目录的bin目录下才可以执行,myself为用户名。

11 测试IDP是否安装成功:
https://localhost/idp/profile/Status访问,如果页面出现’ok’则说明安装正确。这并不意味着你将能够登录到任何东西,因为目前还尚未配置的IDP使用的组织的基础设施。

SAP HANASP)端配置

SAP HANA 端的配置可根据http://scn.sap.com/docs/DOC-50418(Use SAML to enable SSO for your SAP HANA XS App)进行配置。

其中IDP的metadata可在IDP服务器的IDP_HOME/metadata/idp-metadata.xml得到。

部署SP MetadataIDP

1 生成的SAP HANA的metadata了保存为sp-metadata.xml文件放在IDP_HOME/metadata/中。

2 配置 IDP_HOME/conf/ relying-party.xml,添加:

<metadata:MetadataProvider id="URLMD" xsi:type="metadata:FilesystemMetadataProvider"

metadataFile="/usr/local/shibboleth-idp/metadata/sp-metadata.xml" />


错误解决

使用chrome访问可看到错误信息。

1 Response is not success

修改IDP_HOME/conf/ relying-party.xml 中的 xsi:type="saml:SAML2SSOProfile"属性encryptAssertions="never"

2 No name id in subject

在IDP的SAML响应中添加Name ID 需要修改IDP_HOME/conf/ attribute-resolver.xml,添加:

<resolver:AttributeDefinition  id="commPortalPhone"  xsi:type="adrincipalName"   xmlns="urn:mace:shibboleth:2.0:resolver:       ad">

<resolverependency ref="staticAttributes" />

<resolver:AttributeEncoder xsi:type="enc:SAML1StringNameIdentifier" xmlns="urn:mace:shibboleth:2.0:attribute:          encoder"

nameFormat="urnasis:names:tc:SAML:1.1:nameid-format:unspecified"/>

     <resolver:AttributeEncoder xsi:type="enc:SAML2StringNameID" xmlns="urn:mace:shibboleth:2.0:attribute:encoder"

nameFormat="urnasis:names:tc:SAML:1.1:nameid-format:unspecified"/>

</resolver:AttributeDefinition>

以及attribute-filter.xml,添加

<afp:AttributeFilterPolicy id="releaseCommPortalPhoneToAnyone">

<afpolicyRequirementRule xsi:type="basic:ANY"/>

<afp:AttributeRule attributeID="commPortalPhone">

<afpermitValueRule xsi:type="basic:ANY"/>

</afp:AttributeRule>

  </afp:AttributeFilterPolicy>

3 NameID format is not support

设定NameID的nameFormat为:urnasis:names:tc:SAML:1.1:nameid-format:unspecified

拓展

本文是使用RemoteUser处理方式进行用户的验证,一般企业中不会使用该方法,若企业使用LDAP管理用户,则需要修改IDP_HOME/conf/handler.xml 为UsernamePassword方式:

<phoginHandler xsi:type="ph:UsernamePassword"

jaasConfigurationLocation="/usr/local/shibboleth-idp/conf/login.config">

<ph:AuthenticationMethod>urnasis:names:tc:SAML:2.0:ac:classesasswordProtectedTransport</ph:AuthenticationMethod>

     </phoginHandler>

在/usr/local/shibboleth-idp/conf/login.config 配置LDAP的访问方式。


Use SAML to enable SSO for your SAP HANA XS App

http://scn.sap.com/docs/DOC-50418

Shibboleth 2.x Home

https://wiki.shibboleth.net/confluence/display/SHIB2/Home

Linux下安装openldap

http://blog.csdn.net/zhangjunfangkaixin/article/details/3976669

本文的测试案例所使用的SAP HANA版本为SAP HANA SPS7 Revision 74.00,SAP BusinessObjects Data Services 4.1 Support Package 1,hadoop 1.1。



楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-4-30 01:26

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表