系统环境信息
BIEE 12c - 12.2.1.4.0
ADFS
前提条件
本文假设ADFS环境已经安装配置好。
参考文档
配置步骤
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