BIEE和ADFS SAML 2.0 SSO的集成详解

系统环境信息

BIEE 12c - 12.2.1.4.0
ADFS

前提条件

本文假设ADFS环境已经安装配置好。

参考文档

https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=364674761459768&id=2248571.1&_afrWindowMode=0&_adf.ctrl-state=larnao1je_184#aref_section210

配置步骤

1 从ADFS获取Federation Metadata
在浏览器中用如下URL获取元数据
https://<ADFS服务链接>/federationmetadata/2007-06/federationmetadata.xml
在这里插入图片描述
2 开启OBIEE 12C SSL设置

第一步:停止其他服务,只启动administration服务
执行如下命令

    <DomainHome>/bitools/bin/stop.sh
    <DomainHome>/bitools/bin/start.sh -i Adminserver
 

第二步:登陆weblogic console
在这里插入图片描述
第三步:选择环境->服务器
在这里插入图片描述
第四步:点击要配置的服务器
(在oracle提供的文档里需要把两个server的配置都更改,在实际操作中其实只更改bi_server1也是可以的,这样登陆console还用原来的端口就可以,不需要使用SSL)
在这里插入图片描述
第五步:锁定和编辑配置
在这里插入图片描述

第六步:开启SSL,保存设置,然后激活更改
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

第七步(可选):锁定和编辑配置,启用安全复制,进入环境->集群->bi_cluster1
在这里插入图片描述在这里插入图片描述
选择配置->复制,点击启用安全复制

在这里插入图片描述
保存设置,然后激活更改

3 创建SAML2.0 Asserter

第一步:进入weblogic console
第二步:进入安全领域->myrealm
在这里插入图片描述
第三步:点击锁定并编辑按钮
在这里插入图片描述

第四步:在提供程序页面点击新建按钮
在这里插入图片描述

第五步:输入名称,选择类型为SAML2IdentityAsserter, 点击确定按钮
在这里插入图片描述在这里插入图片描述第六步:重启服务器,注意一定要重启,要不然后面配置时看不到相关的内容

4 为weblogic server bi_server1 配置 Federation并且发布元数据
第一步:进入weblogic console
第二步:进入环境->服务器->bi_server1->配置->联合服务->SAML2.0服务提供程序
在这里插入图片描述
第三步:填写信息,大部分用缺省值,红框中的需要更改
在这里插入图片描述
第四步:配置SAML2.0一般信息,进入环境->服务器->bi_server1->配置->联合服务->SAML2.0一般信息
在这里插入图片描述
第五步:填写信息,红框中的信息一定要填写,其余的保持缺省

注意:‘
1 已发布的站点URL’项中填写的格式必须是https://:/saml2,例如https://mybiserver.oracle.com:9503/saml2
2 一次登入签名密钥别名等信息缺省值是 demo keystore的值,如果不是用的demo keystore,需要更改相关信息
注意:如果用的demo keystore, 缺省的demo key alias 是 DemoIdentity; key pass phrase是DemoIdentityPassPhrase

在这里插入图片描述

第六步:保存
第七步:激活更改
第八步:重启服务
第九步:进入环境->服务器->bi_server1->配置->联合服务->SAML2.0一般信息,点击发布元数据
在这里插入图片描述
第十步:输入导出的元数据文件目录,点击确定。
保存元数据文件,这个文件后面要提供给ADFS服务用。
在这里插入图片描述
5 把上一步保存的元数据文件提供给ADFS服务器的系统管理员,管理元负责导入该元数据文件

6 在OBIEE里配置提供方的元数据
第一步:进入weblogic console
第二步:进入安全领域->myrealm
在这里插入图片描述

第三步:进入提供程序->验证->SAML2IAsserter(上面新建的)

在这里插入图片描述
第四步:修改item 1中从ADFS服务器上下载元数据文件,否则新建提供程序合作伙伴时一定会出错
在这里插入图片描述

第六步:上传修改好的元数据文件到OBIEE 服务器

第七步:新建提供程序合作伙伴
在这里插入图片描述
输入名称和元数据文件路径,点击确定按钮,系统会显示已成功导入的信息。合作伙伴生成后通常是未启用状态。
在这里插入图片描述

第八步:启用合作伙伴
在这里插入图片描述
7 配置BI Analytics为SSO
第一步:配置所有Authenticator的控制标记为’SUFFICIENT’,进入myrealm->提供程序->验证->DefaultAuthenticator。
注意:如果有自己新建的Authenticator也要更改
在这里插入图片描述在这里插入图片描述
第二步:更新analytics.ear,加入安全角色
先备份analytics.ear file, 然后执行以下命令

$ cd /home/oraclebi/Oracle/Middleware/Oracle_Home/bi/bifoundation/jee/analytics_test
$ mkdir analytics_test

$ cp analytics.ear analytics_test

$ cd analytics_test/

$ ls -lrt
-rw-r----- 1 oracle oracle 92147154 Mar 28 02:35 analytics.ear

$ jar xvf analytics.ear analytics.war
inflated: analytics.war

$ ls -lrt
-rw-rw-r-- 1 oracle oracle 96878571 Sep 23 2016 analytics.war
-rw-r----- 1 oracle oracle 92147154 Mar 28 02:35 analytics.ear

$ jar xvf analytics.war WEB-INF/weblogic.xml
inflated: WEB-INF/weblogic.xml

$ jar xvf analytics.war WEB-INF/web.xml
inflated: WEB-INF/web.xml

找到web.xml文件,找到

CLIENT-CERT

用如下代码替换

<security-constraint>
<web-resource-collection>
<web-resource-name>BI Analytics</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>SSORole</role-name>
</auth-constraint>
</security-constraint>

<login-config>
<auth-method>CLIENT-CERT</auth-method>
</login-config>

<security-role>
<role-name>SSORole</role-name>
</security-role> 

找到weblogic.xml文件,添加SSORole
weblogic.xml文件应包含如下内容

[oraclebi@biee WEB-INF]$ cat weblogic.xml
<?xml version = '1.0' encoding = 'US-ASCII'?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app">
   <session-descriptor> 
      <cookie-path>/</cookie-path> 
   </session-descriptor>

   <!-- Bug 14659820.
         The oracle.bibopmn library would pull in a version of the sautils.jar which do not access to a mad.jar
         with appropriate codegrants. Due to updgrade restrictions we need to keep using the war's jars. 
      -->
   
   <security-role-assignment>
   <role-name>SSORole</role-name>
   <principal-name>BIUsers</principal-name>
   <principal-name>BIAdmins</principal-name>
   </security-role-assignment>
   <container-descriptor>
       <prefer-web-inf-classes>true</prefer-web-inf-classes>
   </container-descriptor>
</weblogic-web-app>

第三步:重新打包

$ ls -lrt

-rw-rw-r-- 1 oracle oracle 96878571 Sep 23 2016 analytics.war
-rw-r----- 1 oracle oracle 92147154 Mar 28 02:35 analytics.ear
drwxrwxr-x 2 oracle oracle 4096 Mar 28 03:05 WEB-INF

$jar uvf analytics.war WEB-INF/web.xml
adding: WEB-INF/web.xml(in = 8312) (out= 1582)(deflated 80%)

$jar uvf analytics.war WEB-INF/weblogic.xml
adding: WEB-INF/weblogic.xml(in = 506) (out= 222)(deflated 56%)

$jar uvf analytics.ear analytics.war
adding: analytics.war(in = 97205967) (out= 91945650)(deflated 5%)

$cp analytics.ear ../analytics.ear

第四步:重新部署
在这里插入图片描述在这里插入图片描述
8 在EM中启用SSO

第一步:进入EM, 点击左上角图标
在这里插入图片描述

第二步:进入biinstance
在这里插入图片描述
第三步:启用SSO
在这里插入图片描述

9 创建与ADFS中用户对应的用户和用户组和权限
注意:
这里创建的组一定要和上面更改的weblogic.xml中的role name 一致,例如在weblogic.xml中分配的是BIAdmins, BIUsers, 那么在系统里建的组就必需是BIAdmins, BIUsers, 否则会出现403错误。
在这里插入图片描述在这里插入图片描述
10 测试用https链接进入obiee测试用户验证是否已经转向ADFS

11 Troubleshooting
配置完成后测试过程中出现403错误有如下几种可能:
1 用户对应的角色没有建好
2 ADFS身份验证过程中有错误
3 OBIEE自身出现错误

第一种情况需要仔细检查web.xml,weblogic.xml文件和用户组设置。
第二种情况查看ADFS对应的日志,如果出现如下错误:
Protocol Name:
Saml

Relying Party:
bi

Exception details:
Microsoft.IdentityServer.Service.SecurityTokenService.RevocationValidationException: MSIS7098: The certificate identified by thumbprint ‘FC584C01C05968FDDD1E3A614424559EC9D3CF63’ is not valid. It might indicate that the certificate has been revoked, has expired, or that the certificate chain is not trusted.

解决方法:

Open PowerShell in ADFS machine and run below command

Set-ADFSRelyingPartyTrust -TargetIdentifier bi -SigningCertificateRevocationCheck None -EncryptionCertificateRevocationCheck None

bi - It must be same as "relying party identities " at ADFS “Relying Party Trust”

如果排除了第一、二种情况,在浏览器调试界面能看到ADFS正常返回cookie了,考虑是BI自己的问题,这时需要打开BI的相关调试信息。如何启用调试信息,可以参考我的另一篇文章
如何打开OBIEE 12C 的调试跟踪
查看在登陆时的跟踪信息,可能会碰到如下错误
Identity Assertion Failed, weblogic.security.spi.IdentityAssertionException: [Security:096537]Assertion is not yet valid (NotBefore condition).>

这个错误主要原因是BI和ADFS两个服务器的系统时间有差异,在ORACLE的MOS http://support.oracle.com 能找到相关的解决方法。网上搜索相关错误也不少人在使用weblogic过程中碰到过。具体的解决方法是在ADFS系统中设置 NotBeforeSkew, 在powershell中执行

Add-PSSnapin Microsoft.Adfs.PowerShell
Get-ADFSRelyingPartyTrust –identifier “bi”
Set-ADFSRelyingPartyTrust –TargetIdentifier “bi" –NotBeforeSkew 2

参考链接
https://support.syncplicity.com/hc/en-us/articles/202392814-Single-sign-on-with-ADFS

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值