将 Office 365 与 OAM 和 Id 先决条件集成
本文介绍如何使用 SAML 2.0 协议将 OAM(11.1.2.2.0 或更高版本)集成为 IdP 与 Office 365 for Federation SSO。
集成包括:
-
浏览器联盟 SSO 集成:这是用户通过浏览器访问 www.office365.com 资源时执行的流:
-
www.office365.com 提示用户输入其电子邮件地址
-
服务器检测到应该将联合 SSO 用于该域并启动联合 SSO 流 IdP
-
IdP 会质询用户、创建 SAML 断言并将用户重定向到 www.office365.com
-
www.office365.com 授予用户访问权限
-
ActiveSync 邮件集成:在此流中,用户使用为 Office 365 配置的邮件应用程序
-
启动邮件应用程序后,它将用户的凭证(电子邮件地址和 IdP 密码)发送到 Office 365
-
www.office365.com 通过 SSL 与 IdP 建立直接连接,并使用 SAML 2.0 ECP 协议通过 HTTP 基本身份验证发送 SAML AuthnRequest 和用户凭证www.office365.com
-
IdP 通过 ECP 协议验证这些身份证明并返回 SAML 断言
-
Office 365 授予对邮件应用程序的访问权限
请注意,对于非 SAML 2.0 组件,与 Office 365 的集成将不起作用,例如:
-
Lync 客户机
-
OWA 移动设备应用程序
本文基于
-
执行的测试
-
关于对 Office 365 的 SAML 2.0 支持的 Microsoft 文章,更具体地说是列出了配置 Office 365 所需的步骤的技术文档(用户管理和联盟信任建立):
-
Microsoft 博客
-
描述如何配置 Office 365 的技术文档
概述
为了使用 SAML 2.0 协议与 Office 365 集成,必须将 OAM 配置为使用 HTTPS/SSL 作为其端点,并使用众所周知的 CA 颁发的 SSL 证书(如果需要 ActiveSync 邮件集成)。如果不这样做,可能会导致 Office 365 在建立联盟信任时不接受 OAM SAML 2.0 元数据。
Office 365 期望所有 SAML 消息都使用 SHA-1 摘要算法进行签名。因此,必须将 IdP 配置为使用 SHA-1,否则,如果使用 SHA-256,Office 365 SP 将返回错误。此外,Office 365 要求将 IdP 的签名证书包含在已签名 SAML 断言中;因此,需要将 OAM 配置为将其包含在 Office 365 的所有传出签名消息中。
如果在 IdP 中使用 HTTP 基本验证(因为它是 ActiveSync 邮件集成所必需的),则需要将运行 OAM 的 WebLogic 域配置为不验证不安全资源的 HTTP 基本验证。
为了在两个联盟服务器之间建立信任,必须检索以下数据:
-
Office 365 SP SAML 2.0 元数据。
-
由于 Office 365 不支持 SAML 2.0 元数据使用,因此必须收集以下信息:
-
Base64 编码格式的 OAM IdP 签名证书
-
OAM IdP 颁发者值
-
OAM IdP SSO 和注销 URL
最后,为了能够建立联邦信任,需要发生以下情况:
-
对于给定的用户,Office 365 和使用的目录
-
OAM 必须具有该用户的账户
-
必须在 OAM 的用户账户中设置 Office 365 账户中使用的用户全局唯一 ID(或
ImmutableId)和电子邮件地址(或UserPrincipalName) -
对于 ActiveSync 邮件集成,Office 365 使用的电子邮件地址(或
UserPrincipalName)中的标识符必须是 OAM 上用于 HTTP 基本验证的用户名
启用 SSL
重要说明:用于为 OAM 启用 SSL 的 SSL 证书必须由众所周知的 CA 颁发,因为 Office 365 服务器尝试针对 ActiveSync 用例与 OAM 服务器建立直接连接。
有几种方法可在 OAM 的公共端点上启用 SSL:
-
如果负载平衡器面向 OAM,则可以在负载平衡器上启用/配置 SSL/HTTPS
-
如果 OHS 面向 OAM,则为 SSL 配置 OHS
-
如果没有针对 OAM 的组件,则可以为运行 OAM 的 WLS 服务器配置 SSL/HTTPS
为 SSL 配置组件(负载平衡器、OHS 或 WLS)后,需要更新 OAM 配置,以将新端点作为其公共 URL 进行引用:
-
转到 OAM 管理控制台:
http(s)://oam-admin- host:oam-admin-port/oamconsole -
导航到 Configuration 、 Access Manager 设置
-
将 OAM 服务器主机设置为公共端点的主机名
-
将 OAM Server Post 设置为公共端点的 SSL 端口
-
将 OAM 服务器协议设置为 https
-
单击应用

插图 Access_Manager_Settings.jpg 的说明
注:进行这些更改后,检索 OAM SAML 2.0 元数据将包含新的 https URL
HTTP 基本验证
默认情况下,如果浏览器向 OAM 发送 HTTP 基本验证身份证明,则 WLS 服务器会在允许 OAM 处理请求之前尝试验证这些身份证明:这可能会导致验证失败,特别是在未为在 OAM 中创建的每个身份存储库配置 WLS LDAP 验证程序的情况下。
注:即使 WLS 域已正确配置为在 OAM 中为每个身份存储库创建 WLS LDAP 验证程序,也会产生两个验证操作,一个由 WLS 执行,另一个由 OAM 创建 OAM 会话所需的验证操作。
可以禁用自动验证发送到运行 OAM 的 WLS 域中的不安全的应用程序的 HTTP 基本验证身份证明。有关详细信息,请参阅《 Oracle Fusion Middleware Programming Security for Oracle WebLogic Server 》指南中的“Understanding BASIC Authentication with Unsecured Resources”部分。
要禁用自动验证发送到 WLS 域中不安全的应用程序的 HTTP 基本验证身份证明,请执行以下步骤:
-
通过执行以下命令进入 WLST 环境:
$IAM_ORACLE_HOME/common/bin/wlst.sh -
连接到 WLS 管理服务器:
connect() -
启动编辑会话:
edit()startEdit() -
导航到
SecurityConfiguration节点:cd('SecurityConfiguration') -
导航到域(将 DOMAIN_NAME 替换为安装了 OAM 的 WLS 域的名称):
cd('DOMAIN_NAME') -
将
EnforceValidBasicAuthCredentials设置设置为 false 可禁用发送到不安全应用程序的 HTTP 基本验证身份证明的automatic验证:set('EnforceValidBasicAuthCredentials','false') -
Save and activate the changes:
保存()activate() -
重新启动 WLS 域中的服务器以使更改生效
SAML 2.0 元数据、证书和颁发者
要从 Office 365 SP 服务器下载 SAML 2.0 元数据:
-
打开浏览器
-
转到 Azure / Office 365 元数据发布服务:
https://nexus.microsoftonline-p.com/federationmetadata/saml20/federationmetadata.xml -
使用浏览器中的“Save As(另存为)”按钮在本地保存元数据
OAM IdP 签名证书必须作为 Base64 编码字符串提供给 Windows Powershell 命令,以单个字符串的形式提供,不包含空格/换行符。要检索 OAM IdP 签名证书,请执行以下操作以确定使用哪个 keyID 条目对传出 SAML 消息进行签名:
-
转到 OAM 管理控制台:
http(s)://oam-adminhost:oam-admin-port/oamconsole -
导航到配置、联盟设置
-
请注意“签名密钥”字段中 SAML 签名操作的签名密钥的
keyID

插图 Federation_Settings.jpg 的说明
执行以下步骤可检索该 keyID 条目的证书:
-
打开浏览器
-
转到以下 URL(将 KEYENTRY_ID 替换为上一步中检索到的
keyID名称): -
将证书保存在文本文件中。
-
使用您常用的文本编辑器打开文件
-
该文件的内容如下所示:
-----BEGIN CERTIFICATE----- MIIB+DCCAWGgAwIBAgIBCjANBgkqhkiG9w0BAQQFADAhMR8wHQYDVQQDExZhZGMMHBjYy51cy5vcmFjbGUuY29tMB4XDTE0MDMwNDE5MjAzMloXDTI0MDMwMTE5MjAzMlowITEfMB0GA1UEAxMWYWRjMDBwY2MudXMub3JhY2xlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAkQOdZCmoOQRuxSvI/74bjnUPq7u7qiGbmaN1D5TB JaM+j5XRixEUI3pidaxlbykaraqVBMJpXJ6ua0QWectv6SdzuqcvH8C5el06NxTs fB6pcvxHGXVAbAvtGr2tOPSL+5HaFQoATpiY3HugTnJfjmHRfOqIo8nUMek6zCtv rKUCAwEAAaNAMD4wDAYDVR0TAQH/BAIwADAPBgNVHQ8BAf8EBQMDB9gAMB0GA DgQWBBQ/7yJbGCbbAnaLEi4ReLwLlvSxJTANBgkqhkiG9w0BAQQFAAOBgQBrMb2i6zcChhVM7a9VVgBr8xljBsPxVWCAYNUYaoyUj9VkD4CpFF9hVX0CpceoSBTiyMQp 3sg0FAYz1PGfjrq7uFEq9iTCwa5J/7k/VSOLKd3IDqzz7w0ZERksgp3OOqOct/wB/wQplaoMZLcRoInVUbGTBDMfqmW5iZ/wjpzItg== —–END CERTIFICATE—– -
删除第一行
(-----BEGIN CERTIFICATE-----),删除最后一行(-----END CERTIFICATE-----),然后修改文件的其余部分以删除换行符。结果应为单行文件(内容已缩短): - 保存文件。此行作为 Windows Powershell 命令的输入提供。
http://oam-runtime-host:oam-runtime-port/oamfed/idp/cert?id=<KEYENTRY_ID>
MIIB+DCCAWGgAwIBAgIBCjANBg....InVUbGTBDMfqmW5iZ/wjpzItg==
执行以下步骤可检索 IdP 的颁发者/提供商 ID:
-
转到 OAM 管理控制台:
http(s)://oam-admin-host:oam-admin-port/oamconsole -
导航到配置、联盟设置
-
记下“提供商 ID”字段中的“OAM 发行人/提供商 ID”值

OAM IdP SSO 和注销 URL 为(注:请确保具有公共端点,这些端点是最终用户使用的 URL):
-
浏览器 SSO URL:
http(s)://oam-public-host:oam-publicport/oamfed/idp/samlv20 -
ECP SSO URL:
http(s)://oam-public-host:oam-publicport/oamfed/idp/soap -
注销 URL:
http(s)://oam-public-host:oam-publicport/oamfed/idp/samlv20
如果您有任何疑问,可以从 IdP 元数据中检索这些 URL:
-
打开浏览器
-
访问
http(s)://oam-public-host:oam-public-port/oamfed/idp/metadata -
浏览器 SSO URL 将是 XML 的位置属性
Element EntityDescriptor , IDPSSODescriptor , SingleSignOnService for which the Binding attribute is set to urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect: <md:EntityDescriptor ...> ... <md:IDPSSODescriptor ...> ... <md:SingleSignOnService> Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTPRedirect" Location="https://acme.com/oamfed/idp/samlv20"/> ... </md:IDPSSODescriptor> ... </md:EntityDescriptor>
-
ECP SSO URL 将是 XML 的位置属性
Element EntityDescriptor , IDPSSODescriptor , SingleSignOnService for which the Binding attribute is set to urn:oasis:names:tc:SAML:2.0:bindings:SOAP: <md:EntityDescriptor ...> ... <md:IDPSSODescriptor ...> ... <md:SingleSignOnService> Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP"Location="https://acme.com/oamfed/idp/soap"/> ... </md:IDPSSODescriptor> ... </md:EntityDescriptor> -
注销 URL 将是 XML 的位置属性
Element EntityDescriptor , IDPSSODescriptor , SingleLogoutService for which the Binding attribute is set to urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect: <md:EntityDescriptor ...> ... <md:IDPSSODescriptor ...> ... <md:SingleLogoutServiceBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTPRedirect" Location="https://acme.com/oamfed/idp/samlv20"ResponseLocation="https://acme.com/oamfed/idp/samlv20"/> ... </md:IDPSSODescriptor> ... </md:EntityDescriptor>
SHA-256 与 SHA-1
在 OAM 和 Office 365 之间设置联盟后,必须将 OAM 配置为将 SHA-1 用于 Office 365 SP 合作伙伴的签名。
OAM 在签名消息中的签名证书
在 OAM 和 Office 365 之间设置联盟后,必须配置 OAM,以便联盟服务器在 Office 365 SP 合作伙伴的所有传出签名 SAML 消息中包括其 X.509 签名证书。
用户帐户
必须同步 Office 365 和 OAM 目录中的用户帐户以支持各种联盟流(浏览器 SSO 和 ActiveSync):
-
对于给定的用户,Office 365 和 OAM 使用的目录都必须具有该用户的帐户
-
必须在 OAM 的用户账户中设置 Office 365 账户中使用的用户全局唯一 ID(或
ImmutableId)和电子邮件地址(或UserPrincipalName) -
对于 ActiveSync 邮件集成,Office 365 使用的
userID(或ImmutableId)必须是 OAM 上用于 HTTP 基本验证的用户名: -
电子邮件地址(或
UserPrincipalName)中的标识符是@字符前面的电子邮件地址部分。例如,如果UserPrincipalName为 alice.appleton@acme.com,则标识符为alice.appleton -
该标识符是 HTTP 基本验证用户名。例如
alice.appleton -
OAM HTTP 基本验证方案的 OAM 身份存储库配置中使用的用户 ID 属性必须与传入的 HTTP 基本验证用户名匹配。例如,用户别名的 OAM 身份存储库中使用的用户 ID 属性必须为 alice.appleton。
ImmutableId
ImmutableId 是 Office 365 用于唯一引用用户的属性。即使稍后删除用户记录,以后创建的任何其他用户都不能具有相同的 ImmutableId 值。
ImmutableId 通常是
-
随机唯一标识符(例如 2848cfc7f6914af2a550c024bcbf0c6e)
-
或者被视为唯一的用户名:即使从系统中删除了原始用户,其他用户也不会拥有相同的用户名。
UserPrincipalName
UserPrincipalName(或 UPN)是具有电子邮件地址格式的标识符。电子邮件地址的域名需要映射到 Office 365 域中使用的名称。
例如,如果为联盟 SSO 的 acme.com 域配置了 Office 365,则具有类似于 identiSer@acme.com 的电子邮件地址的所有用户都可以使用为该 Office 365 域配置的 IdP 来执行联盟 SSO。
ActiveSync 要求
在 ActiveSync 邮件流中:
-
Office 365 邮件服务器通过 SSL 直接连接到 IdP,并使用 SAML 2.0 ECP 协议通过 HTTP 基本验证发送 SAML AuthnRequest 和用户的身份证明
-
IdP 通过 ECP 协议验证这些身份证明并返回 SAML 断言
-
Office 365 授予对邮件应用程序的访问权限
在这样的流中,用户将:
-
将其电子邮件地址提供给 Office 365(例如 alice.appleton@acme.com)
-
Office 365 使用 '@' 字符之前的标识符作为 HTTP 基本验证用户名(例如 alice.appleton)
-
IdP 必须能够验证身份证明,并且用户名是电子邮件地址中的标识符(例如 alice.appleton)
用户名要求
基于上述情况,IdP 中的用户验证要求如下:
| 浏览器 |
验证用户名 |
HTTP 基本验证用户名,网址为 IdP |
|---|---|---|
| 基于浏览器的联盟 SSO | 任何内容 | 不适用 |
基于浏览器的联盟 SSO + ActiveSync ECP |
任何内容 | 电子邮件地址中的标识符 |
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或在 Oracle Learning YouTube 频道上访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Integrating Office 365 with OAM and Id Pre-Requisites
F60937-01
September 2022
Copyright © 2022, Oracle and/or its affiliates.