OIM启用LDAP同步-安装时配置

一般情况下,OIM与OID(LDAP)的同步是在安装OIM的时候进行配置的,主要是同步用户以及角色。

OIM的用户对应到OID用户下:Users –>Users

OIM的角色(roles)对应到OID的组(groups)下:Roles->Groups

安装时候的配置步骤:

选择启用LDAP同步

image

配置LDAP服务器(此次配置的信息可以在后期进行更改,主要是针对container):

我们此处将OIM中的LDAP RoleContainer配置到OID(LDAP)中的cn=groups,basedn

UserContainer配置到:cn=users,basedn

Reservation Container配置到:cn=reserve, basedn

在此次配置完成之后,或者是尚未进行ldap同步的配置的情况下,如何对这里进行设置呢,后面会有blog提到。

image

配置完成。

weblogic导入导出工具进行导入导出MDS

在OIM的过程中,不免会经常碰到需要从服务器上导出MDS配置文件或者是往服务器上导入我们配置后的MDS文件,所以weblogic的导入导出工具的使用还是比较频繁的,本文主要介绍weblogic工具。

如何从weblogic中导出MDS文件:

1.首先我们新建一个文件夹用以保存所需导出的MDS文件:

在/u01/app/Oracle/Middleware/文件夹下创建tmp2/metadata/db/目录:

用以存储MDS文件的目录为:/u01/app/Oracle/Middleware/tmp2/metadata/db

2.配置weblogic.properties文件

进入到/u01/app/Oracle/Middleware/Oracle_IDM2/server/bin,对weblogic.properties文件进行编辑:

配置属性如下:

属性 说明
wls_servername oim_server1 OIM应用所运行的服务器上,一般情况下为oim_server1
application_name OIMMetadata 一般有两种选择:
oim:当导入或者是导出out of box的事件处理的时候;
OIMMetadata:其他的out of box元数据都是,以及导入或者是导出自定义数据的时候。
metadata_from_loc /u01/app/Oracle
/Middleware/tmp2/metadata
当我们需要导入的时候才会用到这个属性,我们需要将/u01/app/Oracle/Middleware/tmp2/metadata/db/
LDAPContainerRules.xml文件导入到/db/LDAPContainerRules.xml的时候,我们需要将这个属性的值设置为/u01/app/Oracle/Middleware/tmp2/metadata
metadata_to_loc /u01/app/Oracle
/Middleware/tmp2/metadata
当我们需要导出MDS文件的时候,才会用到这个属性,这个属性配合metadata_files属性一起使用,假设我们需要将/db/LDAPContainerRules.xml文件导出到/u01/app/Oracle/Middleware/tmp2/metadata目录下,我们就需要将这个属性设置为:/u01/app/Oracle/Middleware/tmp2/metadata,以及metadata_files属性设置为:/db/LDAPContainerRules.xml
metadata_files /db/LDAPContainerRules.xml 所需要导出文件的文件名以及其在weblogic上保存的名称。假设我们需要将db/LDAPContainerRules.xml导出,就需要将该属性设置为db/LDAPContainerRules.xml

导入测试:

我们需要将/db/LDAPContainerRules.xml文件从weblogic导出到/u01/app/Oracle/Middleware/tmp2/metadata,那首先我们将weblogic.properties文件设置为如下:

wls_servername=oim_server1

application_name=OIMMetadata

metadata_from_loc=

metadata_to_loc=/u01/app/Oracle/Middleware/tmp2/metadata

metadata_files=/db/LDAPContainerRules.xml

其次使用导出工具:

1.进入到/u01/app/Oracle/Middleware/Oracle_IDM2/server/bin文件夹中:cd /u01/app/Oracle/Middleware/Oracle_IDM2/server/bin

2.设置环境变量

export OIM_ORACLE_HOME=/u01/app/Oracle/Middleware/Oracle_IDM2

3.运行导出脚本

./weblogicExportMetadata.sh

4.输入用户名,密码,服务器(由于我是在本机上的,所以用localhost)

weblogic

weblogic1

t3://localhost:7001

5.运行结果

image

最后进入到我们的/u01/app/Oracle/Middleware/tmp2/metadata/db文件夹中可以查看到LDAPContainerRules.xml这个文件。

 

导出测试:

我们需要对刚才导出的/db/LDAPContainerRules.xml文件进行更改,然后进行导入。

1.我们首先需要对该文件进行编辑

2.然后将/u01/app/Oracle/Middleware/Oracle_IDM2/server/bin下的weblogic.properties文件配置如下:

wls_servername=oim_server1

application_name=OIMMetadata

metadata_from_loc=/u01/app/Oracle/Middleware/tmp2/metadata

metadata_to_loc=

metadata_files=

3.设置环境变量

export OIM_ORACLE_HOME=/u01/app/Oracle/Middleware/Oracle_IDM2

4.运行导出脚本

./weblogicImportMetadata.sh

5.输入用户名,密码,服务器(由于我是在本机上的,所以用localhost)

weblogic

weblogic1

t3://localhost:7001

6.运行结果

image

最后再根据导出的步骤将我们导入的文件进行导出,进行查看,就可以发现该文件已经被更改。

使用wlst工具进行导入导出(这个好用):

导出OIM中的所有MDS Data

./wlst.sh

connect()

weblogic

weblogic1

t3://localhost:7001

exportMetadata(application=’OIMMetadata’, server=’oim_server1′, toLocation=’/u01/app/Oracle/Middleware/tmp2/metadata’)

:)

PS:最后盗个我崇拜的老大的表情

:)

LDAP同步映射container配置

一般情况下在安装OIM的时候,就会对LDAP的同步服务器以及其container进行配置,详细的配置内容请参考

OIM启用LDAP同步-安装时配置  这篇blog
在安装并配置完成之后,或者是仅仅安装而没有进行ldap同步配置,我们亦可以对LDAP的container进行配置。
配置步骤如下:
进入到/u01/app/Oracle/Middleware/Oracle_IDM2/server/metadata目录下,将db文件夹拷贝到另一个目录下,例如:
/u01/app/Oracle/Middleware/tmp/metadata目录下:
/u01/app/Oracle/Middleware/tmp/metadata/db:
image
编辑LDAPContainerRules.xml来对Container规则进行配置:
在默认的情况下,这个文件是这样的:

<?xml version="1.0"?>
   <container-rules>
      <user>
         <rule>
            <expression>Default</expression>
            <container>$DefaultRoleContainer$</container>
         </rule>
      </user>
      <role>
         <rule>
            <expression>Default</expression>
            <container>$DefaultRoleContainer$</container>
         </rule>
      </role>
</container-rules>

首先我们可以对角色的container进行配置,如上述XML文件所示,一般情况下一个role节点下面只有一个rule进行对应,但我们可以对其进行添加,可添加多个rule使其选择性对container的规则进行匹配:

默认的情况下,$DefaultRoleContainer$指向的是你在安装的时候所配置的container的位置,具体是在哪里可以对这个参数进行编辑,得进行深一步的探讨,这里我们可以用绝对container路径对其更改,例如:角色的:cn=groups, dc=hand-china, dc=com

如果角色的container仅需要一个的话,那就只有一个默认的rule节点进行定义就行了。

假设有这么个业务需求,当添加一个角色,该角色的角色类型是销售类型的话,把它的container设置为:cn=salesGroup, cn=groups, dc=hand-china, dc=com。当该角色的类型为采购类型的话,将它的container设置为:cn=puchGroup, cn=groups, dc=hand-china, dc=com,那我们可以针对这样的需求进行这样的配置:

首先我们需要创建相应的角色类型(Role Category)用以存储相应类型的角色,这里的角色类型是没有任何的具体使用的业务意义的,只是用以OIM当中对角色进行分类的逻辑文件夹。此处,我们主要还用以它作为角色container判定的标志。

然后我们对LDAPContainerRules.xml下的role下面的rule进行如下的配置:

<role>
    <rule>
        <expression>Role Category Key=sales</expression>
        <container>cn=salesGroup, cn=groups, dc=hand-china,dc=com</container>
    </rule>
    <rule>
        <expression>Role Category Key=puch</expression>
        <container>cn=puchGroup, cn=groups, dc=hand-china, dc=com</container>
    </rule>
    <rule>
        <expression>Default</expression>
        <container>cn=groups, dc=hand-china, dc=com</container>
    </rule>
</role>
最后我们将配置完成以后的LDAPContainerRules.xml进行导入。

具体的导入方式请参考如何使用weblogic导入导出工具进行导入导出MDS。

SIEBEL与OAM单点登录

在做siebel和OAM单点登录配置的时候,由于相关的资料比较少,所以花费的时间相对较多,不多说,直奔正题。

首先来了解下OAM与Siebel的集成是个怎么样的流程以及其架构

OAM与Siebel集成架
  • OAM部分

OAM与siebel的集成验证过程主要是这样的:首先用户会去对siebel系统中的内容进行请求访问,webgate会对用户的请求进行拦截,并且会对该请求内容判断其是否为被保护的内容,如果为公开的内容,则返回内容给用户,反之,则webgate会去验证其session,存在相应的合法session的话,webgate会将头变量传递到siebel服务器。如果不存在合法的session,就会对用户进行验证。验证成功以后,OAM会执行定义在验证策略中的动作并且会设置映射到siebel系统中userID的HTTP头变量。最后webgate会重定向到用户所请求的siebel资源。

  • Siebel部分

Siebel会对OAM设置的HTTP头变量进行判别,并对用户身份进行验证以及初始化session。然后用户可以对OAM进行保护的所有资源进行访问。如果Siebel判别不通过的话,用户会被拒绝访问,最后会被重定向到由管理员指定的另一个URL。

头变量是存储在Siebel Web Engine中的。

image

Siebel配置过程

1. 安装IBM Ldap Client, GSKit

2. 创建用户

1. 创建siebel用户

2. 创建OID用户

3. 配置Ldap Adapter(服务器)

4. 配置组件参数

5. 配置eapps.cfg

6. 配置siebel.cfg

7. 配置siebel监听端口

8. 重启siebel

1. 安装IBM Ldap Client,GSKit

由于在我们配置的过程需要用到Ldap Adapter,然后使用Ldap Adapter需要安装IBM Client某些库的支撑。

安装介质:itds60-client-lin-ia32-ismp.tar

image

image

image

image

image

image

image

image

添加环境变量:

LD_LIBRARY_PATH=/opt/ibm/ldap/V6.0/lib:$LD_LIBRARY_PATH

2.创建用户

创建siebel用户

在进行配置之前,我们需要在siebel系统中拥有配置过程需要使用到的三个用户

1. 匿名用户

2. 管理员用户

3. 测试用户

在siebel中创建三个用户(由于原先Siebel中已存在,我们就直接进行使用,不需要创建):

匿名用户

GUESTCST

管理员用户

SADMIN

测试用户

SADMIN

创建OID用户

分别对应着上述章节的每个siebel用户创建相关的OID用户,与此同时我们还需要一个OID可登录的管理员帐号,这里我们用的是orcladmin

1. GUESTCST:

cn=GUESTCST,cn=users,dc=XXXX,dc=com,dc=cn

注意:GUESTCST的mail属性设置为username=SADMIN password=SADMIN

J6H75_YN)4JY{B4]WBZBF8I

SADMIN

SADMIN即为可登录到Siebel数据库的帐号,密码,并且该帐号具有查看所有siebel表的权限(sse_role)。

image

3.配置LDAP Security Adapter

通过浏览->网站地图->管理-服务器配置->企业浏览器->SBA_81->配置信息->LDAP Security Adapter进入到LDAP Security Adapter配置界面:

image

具体配置参数如下:

属性

说明

Application User

cn=orcladmin,cn=users,dc=xxx,dc=com,dc=cn

用以访问LDAP的Siebel用户的DN

Application Password

weblogic1

Orcladmin的密码

Base Dn

cn=Users, dc=xxxx,dc=com,dc=cn

LDAP的base DN

Credentials Attribute Type

mail

验证属性:即为刚刚我们用以存储DB登录帐号密码的属性mail

Security Adapter Dll Name

sscfldap

Security adapter dll 的名字

Port

3060

LDAP的端口

Propagate Change

True

 

Password Attribute Type

userpassword

在LDAP用以存储用户密码的属性

Server Name

xxxxxxx

LDAP服务器名称

Shared Credentials DN

   

Shared DB Password

SADMIN

用以连接Siebel数据库的密码

Shared DB Username

SADMIN

用以连接Siebel数据库的名称

Siebel Username Attribute Type

Cn

LDAP中用以存储siebel用户名的属性

Single Sign On

True

启用单点登录

Trust Token

DICK

自定义的Trust Token

Username Attribute Type

Cn

LDAP中用以存储用户名的属性

image

保存配置.

4.配置组件参数

通过浏览->网站地图->管理-服务器配置->企业浏览器->SBA_81->服务器->组件->Sales Object Management(CHS)->参数进入到Sales_chs配置界面:

查询Sec*

image

配置以下两个参数:

Security Adapter Mode

LDAP

Security Adapter Name

LDAPSecAdpt

保存配置

5.配置eapps.cfg

进入到/app/siebel/sweapp/bin目录下,进行配置eapps.cfg文件:

进行需要配置的组件进行配置(这里我们配置的是sales_chs组件):

修改[sales_chs]如下:

[/sales_chs]

EncryptedPassword = False

AnonUserName = GUESTCST

AnonPassword = GUESTCST

Singlesignon = TRUE

TrustToken = DICK

UserSpec = SSO_SIEBEL_USER

UserSpecSource = Header

ConnectString = siebel.TCPIP.None.ZLIB://siebeltest:2321/SBA_81/SSEObjMgr_chs

WebPublicRootDir = /app/siebel/sweapp/public/chs

SiebEntSecToken = P8+0qD5UzVQBK00AAA==

6.配置siebel.cfg

 

进入到/app/siebel/siebsrvr/bin/chs目录,对siebel.cfg文件进行配置:

配置内容如下:

[LDAPSecAdpt]

SecAdptDllName = sscfldap

ServerName = XXXX

Port = 3060

BaseDN = cn=Users, dc=XXX,dc=com,dc=cn

SharedCredentialsDN =

UsernameAttributeType = cn

PasswordAttributeType = userpassword

CredentialsAttributeType = mail

RolesAttributeType =

SslDatabase =

ApplicationUser = cn=orcladmin,cn=users,dc=XXXX,dc=com,dc=cn

ApplicationPassword = weblogic1

HashDBPwd = FALSE

PropagateChange = TRUE

CRC =

SingleSignOn = TRUE

TrustToken = DICK

UseAdapterUsername = TRUE

SiebelUsernameAttributeType = cn

7.配置siebel监听端口

1. 正常关闭Siebel Server,Gateway Server以及Web Server

2. 备份/u01/app/siebel/web/ohs/conf/httpd.conf &highperformance.conf

3. 修改httpd.conf 内#Listen 7780 – >Listen 7777

4. 修改highperformance.conf

#Listen 7780
Listen 7777
ServerRoot /u01/app/siebel/web/ohs
DocumentRoot /u01/app/siebel/web/ohs/htdocs

5. 备份/u01/app/siebel/eappweb/bin/eapps.cfg

6. 修改/u01/app/siebel/eappweb/bin/eapps.cfg HTTPPort = 7780 – 7777

7. 重启Siebel 的APP,现在就可以正常访问了

注意:必须保证单点登录的端口与Sibel的端口一致。

8.重启siebel

 

停止siebel server

. /app/siebel/siebsrvr/siebenv.sh

stop_server all

停止gateway

. /app/siebel/gtwysrvr/siebenv.sh

stop_ns

停止Oracle http Server(OHS)

. ~/.ohs.env

opmnctl stopall

启动Oracle http Server(OHS)

. ~/.ohs.env

opmnctl startall

启动gateway

. /app/siebel/gtwysrvr/siebenv.sh

start_ns

启动siebel server

. /app/siebel/siebsrvr/siebenv.sh

start_server all

 

9. 部署Webtier

运行配置脚本

在安装完成Webtier 11.1.1.5.0后,执行以下脚本:

cd /u01/app/Oracle/Middleware/Oracle_WT1/bin/

./config.sh

配置过程

1. Specify Weblogic Domain:该domain需要填安装webtier所在的domain

上述步骤配置完成以后,可以通过http://idmdev.xxxxx.com.cn:7777/进行访问。

修改mod_wl_ohs.conf文件,设置其为Siebel proxy

添加以下内容到该文件:

<Location /sales_chs>

SetHandler weblogic-handler

WebLogicHost 172.31.2.32

WebLogicPort 7777

</Location>

重启OHS

运行以下命令进行重启

cd /u01/app/Oracle/Middleware/Oracle_WT1/instances/instance1/bin

./opmnctl stopall

./opmnctl startall

10.部署Webgate

准备部署

运行如下脚本(【】中的不运行),准备部署OAM11g Webgate :

1. cd /u01/app/Oracle/Middleware/Oracle_OAMWebGate1/webgate/ohs/tools/deployWebGate/

2. ./deployWebGateInstance.sh -w /u01/app/Oracle/Middleware/Oracle_WT1/instances/instance/config/OHS/ohs -oh /u01/app/Oracle/Middleware/Oracle_OAMWebGate1

【./deployWebgateInstance.sh -w <Webgate_Instance_Directory>

-oh <Webgate_Oracle_Home>】

3. export LD_LIBRARY_PATH= /home/oracle/Oracle/Middleware/Oracle_WT1/lib

4. cd /u01/app/Oracle/Middleware/Oracle_OAMWebGate1/webgate/ohs/tools/setup/InstallTools

5. ./EditHttpConf -w /u01/app/Oracle/Middleware/Oracle_WT1/instances/instance1/config/OHS/ohs1 -oh /u01/app/Oracle/Middleware/Oracle_OAMWebGate1 -o webgate.conf

【./EditHttpConf -w <Webgate_Instance_Directory> [-oh <Webgate_Oracle_Home>] [-o <output_file>]】

注册Webgate Agent

1. 登录到oamconsole,选择首页的SSO代理中的新建 OAM 11g Webgate

clip_image002新建 OAM 11g Webgate

2. 新建OAM 11g Webgate

1. 新建OAM 11g Webgate

image

2. 添加资源

资源列表:

受保护资源列表:

protectedResourcesList

/sales_chs/

公共资源列表

publicResourcesList

 

3. 点击应用按钮

clip_image002[5]

image

4. 拷贝文件

根据上面创建成功的提醒,进入到所提示创建文件的目录下将

cwallet.sso

ObAccessClient.xml

两个文件拷贝到

/u01/app/Oracle/Middleware/

/Oracle_WT1/instances/instance1/config/OHS/ohs1/webgate/config

5. 在注册完毕以后注销oamconsole,然后重新登录,选择以下功能

clip_image002[7]

1. 进行响应的编辑

添加以下值:

l SSO_SIEBEL_USER

名称:SSO_SIEBEL_USER

类型:标头

值:$user.attr.uid

l REMOTE_USER

名称:REMOTE_USER

类型:标头

值:$user.attr.uid

l OAM_REMOTE_USER

名称:OAM_REMOTE_USER

类型:标头

值:$user.attr.uid

clip_image002[9]

至此,部署webgate完毕。

至此,配置完毕,可以进行登录测试

OAM简介

OAM简介

什么是OAM

OAM是针对web访问管理以及用户身份管理的Oracle身份管理的解决方案。OAM是被设计去支持复杂,不均匀的企业环境的。OAM由两个紧密集成的组件组成的:访问及身份系统。身份系统提供了用户配置文件的委托管理以及创建,更新以及更新这些配置文件的工作流。它还提供了应用给用户去self-registration,管理密码以及动态组管理。访问系统为运行在各种不同的WEB以及应用服务器的WEB应用以及J2EE资源提供了访问控制以及单点登录。

OAM组件

OAM包含了以下三个组件:

  • Access Server:一个独立的服务器,为Acces gates提供了授权,验证以及审计等服务,安装OAM的时候自带的。
  • WebGate:拦截HTTP请求并将其转向Acces Server中进行验证与授权,需要额外安装的插件。
  • Identity Assertion Provider (IAP) :一类安全provider,通过验证产生cookie中的头信息对用户身份进行断言。
OAM功能

OAM为企业应用提供了以下功能

  • 身份验证
  • 身份管理(通过与OID进行集成)
  • 访问控制
  • 单点登录
OAM单点登录流程

一般情况下,用户会通过浏览器对weblogic中运行的程序进行访问,例如此次配置的webcenter spaces,discussion应用。Oracle HTTP Server(OHS)会使用OAM Webagte对用户发出的请求进行拦截,并将其转向到OAM的Policy服务器进行身份验证。OAM对用户身份验证成功之后,OAM会产生一个回话凭证,一个cookie,该cookie可以比作单点登录的令牌。获得令牌以后OAM会根据其身份信息,使用IAP进行断言并进行授权,根据授权级别以及授权结果,返回相应的请求资源。

详细的登录流程如下:

OAM单点登录的流程主要包括以下三个步骤:

1. 检查用户请求的资源是否为受保护的

2. 进行验证

3. 进行授权

  • 第一步:检验资源是否为受保护的资源

image

如上图:

1. 用户请求资源

2. 经过Webgate处理,将请求转向OAM进行策略评估

3. OAM主要做了两个工作

a) 验证单点登录cookie是否存在

b) 检查所请求的资源是否为被保护的(有公开的和被保护的两种)

4. OAM记录下来并返回检查结果

5. 根据返回结果判断是否为被保护的资源,Webgate根据是否为被保护资源,做出的反应如下:

a) 公开资源:资源被提供给用户,流程结束

b) 受保护的资源:

i. 用户请求被重定向到credential collector

ii. 提供给一个基于验证策略的登录表单给用户

iii. 验证流程开始

image

  • 第二步:验证过程

image

6. 用户发送凭证

7. OAM对用户发送过来的凭证进行验证

8. OAM启动会话并创建下面host-based的cookies:

a) One per partner:Webgate使用从OAM接收到的身份验证的令牌进行设置OAMAuthnCookie,每个会话需要一个合法的cookie

b) OAM Server端:OAM_ID

9. OAM记录下验证结果并返回到用户

10. OAM credential collector将用户请求重定向到webgate,授权流程开始

  • l 第三步:对用户进行授权

image

11. Webgate提醒OAM Server去进行查询策略,并将他们与用户身份进行比对,决定用户的授权级别

12. OAM记录下策略决定以及检查session,cookie

13. OAM评估授权策略并将结果进行缓存

14. OAM记录并返回其决定

15. Webgate回应如下:

a) 如果授权策略允许访问,请求会被重定向到mod_wl,mod_wl会依次将请求重定向到webcenter spaces应用所运行的weblogic上,并将内容展示给用户。用户成功进行反问请求的资源,登录成功。

WebGate -> mod_wl -> Spaces [, Discussion, .. etc] –> Content is server tothe authenticated user

b) 如果授权策略拒绝访问,用户会被重定向到管理员指定的URL

OAM单点登录组件原理

了解了OAM单点登录的流程以后,我们可以通过下面图来解析下通过OAM以及其他中间件组件是如何来实现单点登录的。

通过此图,我们可以清楚的看到在此方案中,每个使用组件的功能:

image

1. OAM:

  • 验证策略
  • 授权策略

2. Webgate:进行用户HTTP的拦截

3. Webtier:将OHS上的代理重定向到weblogic上

4. OID:进行用户信息的存储以及管理

  • OAM策略模型

在一个OAM应用域的环境中,OAM策略模型同时支持验证和授权服务(旧的版本 中OAM策略域中提供)。策略模型依赖着外部的user identity stores以及验证模型,这个是整体系统配置的一部分。

下图中显示了OAM 11g策略模型中不同的元素:

image

OAM 11g策略模型构造的最高层是OAM应用域(Application domain)。每个应用域都为资源和相关的决定谁能访问这些资源的验证及授权策略提供了一个逻辑容器。

应用域的大小和数量是由管理员决定的,还可以根据各个应用资源或其他任何需要的逻辑分组来决定。在注册一个Agent的时候会自动去创建一个应用域。同时,管理员还可以使用单个agent来维护多个应用域,通过手动去创建应用域以及添加资源和策略。

共享的策略组件:

  • l 资源类型

被保护资源的类型。每个资源都会有一个单独的资源类型,然而,每个资源类型可以有任意个资源。当您需要定义一个资源,首先得去定义该资源的类型。

  • l 主机标识
  • l 验证方案

 

初来咋到,请大家多多关照!