关于在 Azure AD 与 Oracle Access Manager for Oracle E-Business Suite 之间配置 SSO

现在,您将完成在 Azure AD 中注册新的联合服务提供商 (E-Business Suite) 所需的步骤,并在 Oracle Access Manager 中注册新的身份提供者 (E-Business Suite),并使用 Oracle Access Manager 对 Azure AD 和 E-Business Suite 进行任何必需的配置更改以完成联合 SSO 验证。

了解 Azure AD 和 E-Business Suite 联盟流

继续配置之前,应了解 Azure AD 和 E-Business Suite 联盟流。

后面是 ebiz-federation-flow.png 的说明
插图 ebiz-federation-flow.png 的说明

在此方案中,用户使用存储在 Azure AD 中的身份证明访问 E-Business Suite。此访问是通过使用 SAML 2.0 协议进行联合验证设置的,其中 Azure AD 是身份提供者 (IDP),E-Business Suite 是服务提供商 (service provider,SP)。由于 Oracle Access Manager 部署在适用于 SSO 的 E-Business Suite 前面,因此它也是为 E-Business Suite 提供联合功能的组件。本节提供了在 Azure AD 和 Oracle Access Manager 之间实施身份联盟所需的步骤。

请注意,我们主要对基于访问受 E-Business Suite 保护的端点而启动的联盟流感兴趣。在 SAML 协议术语中,这称为服务提供者启动的(SP 启动的)流,如图 2 中所示。在该流中,Oracle Access Manager (OAM) 服务器检测对受 E-Business Suite 保护资源的访问、创建验证请求 (SAMLRequest) 并将浏览器重定向到 Azure AD 进行验证。Azure AD 会向用户挑战身份证明、验证身份证明、创建 SAMLResponse 作为对收到的验证请求的响应,并将其发送到 Oracle Access Manager。反过来,Oracle Access Manager 将验证断言并断言嵌入在断言中的用户标识信息,授予对受保护资源的访问权限。

请注意,本节中提供的配置还考虑了身份提供者启动的(IdP 启动的)流,最初向 Azure AD SAML 站点间 URL 发出了请求,而后者又向 Oracle Access Manager 服务器发送了未经请求的 SAMLResponse。

提供的配置还支持 SP 启动的单次注销(其中注销流由 E-Business Suite 启动)。本文最初发布时,不支持 IDP 启动的单次注销(其中注销流由 Azure 门户启动)。有关详细信息,请参阅本文档末尾的“已知问题”部分。

将 Azure AD 配置为身份提供者

首先,您需要将 Azure AD 配置为身份提供者。

  1. 以域管理员身份登录 Azure 门户
  2. 在最左侧的导航窗格中,单击 Azure Active Directory
  3. 在“Azure Active Directory”窗格中,单击企业应用程序
  4. 单击 New application
  5. 从库添加部分中,在搜索框中键入 Oracle Access Manager for EBS ,从生成的应用程序中选择 Oracle Access Manager for EBS ,然后单击添加
  6. 要将 Oracle Access Manager 配置为应用程序的服务提供者,请单击单点登录
  7. 选择 SAML 作为单点登录方法。

    此时将显示使用 SAML 设置一次登入页面。此处,您将在以下步骤中输入集成详细信息。

    您需要输入的一些值来自 Oracle Access Manager 的 SAML 元数据。要获取元数据,请转至 http(s)://<oam_hostname>:<port>/oamfed/sp/metadata。输出是 XML 数据,您在后续步骤中需要其中的一些数据。

  8. 在“使用 SAML 设置一次登入”页的基本 SAML 配置区域中,提供标识符(实体 ID)回复 URL(断言使用者服务 URL)注销 URL 的值。
    • 标识符(实体 ID) 对应于 SAML 元数据中 EntityDescriptor 元素的 entityID 属性。在运行时,Azure AD 将值添加到 SAML 断言的受众元素中,指示作为断言的预期目标的受众。在 Oracle Access Manager 元数据中找到以下值并输入该值:
      <md:EntityDescriptor
      …
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       ID="id-4TfauRP-ZeWyweEXkrqcBA0w0nRhe64hOPfnY2YR"
       cacheDuration="P30DT0H0M0S"
       entityID="http://myoamserver.mycompany.com:14100/oam/fed"
       validUntil="2029-03-19T21:13:40Z">
      …
    • 回复 URL(断言使用者服务 URL) 对应于 SAML 元数据中 AssertionConsumerService 元素的 Location 属性。确保选取相对于 HTTP_POST 绑定的 Location 属性,如以下示例中所示。回复 URL 是联盟合作伙伴中预计将处理断言的 SAML 服务端点。
      <md:AssertionConsumerService
      Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
      Location="https://myoamserver.mycompany.com/oam/server/fed/sp/sso"
      index="1"/>
    • 注销 URL 对应于 Oracle Access Manager 的 SAML logout 端点。该值对应于 Oracle Access Manager 的 SAML 元数据中 SingleLogoutService 元素的 Location 属性。此值仅在 IdP 启动的注销流中使用。
      <md:SingleLogoutService
      Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
      Location="https://myoamserver.mycompany.com/oamfed/sp/samlv20"
      ResponseLocation="https://myoamserver.mycompany.com/oamfed/sp/samlv20"
      />
      

    注:

    “登录 URL”和“中继状态”属性与此方案无关,因此您可以跳过它们。
  9. 用户属性和索赔区域中,配置将在 SAML 断言中插入并发送到 Oracle Access Manager 的用户属性。对于此方案,只需发送某种形式的唯一用户标识即可。
    将值保留为 Name identifier value: user.userprincipalname [nameid-format:emailAddress] 的默认值,因为 userprincipalname 是 Azure AD 中的唯一属性。此类配置的含义是需要将 userprincipalname 值导入 Oracle Access Manager 身份存储库(LDAP 服务器存储库)中的用户条目。
  10. .在 SAML Signing Certificate(SAML 签名证书)区域中,单击联合元数据 XML 旁边的 Download(下载)链接,然后将文件保存在计算机上。以后将 Oracle Access Manager 配置为服务提供者时,您将使用该服务。

将用户分配给应用程序

接下来,将用户分配给应用程序。在 Azure AD 收到来自应用程序的验证请求后,只有分配给应用程序的用户才能登录。

  1. 在上一节中创建的 Azure AD 应用程序中,单击用户和组,然后单击添加用户
  2. 选择用户和组:未选择选项,然后执行以下步骤:
    1. 选择成员或邀请外部用户搜索框中,输入用户的名称,然后按 Enter 键。
    2. 选择用户,然后单击选择以添加用户。
    3. 单击分配
    4. 要添加多个用户或组,请重复以下步骤。
  3. 要防止用户查看仅用于 SSO 配置的此企业应用程序,请单击属性,将对用户可见的值更改为,然后单击保存

为 Azure AD 创建新身份提供程序

接下来,为 Azure AD 创建一个新的身份提供程序。此步骤假定已启用 Oracle Access Manager 联盟服务。

  1. 以管理员身份登录 Oracle Access Manager 控制台
  2. 单击控制台顶部的 Federation(联盟)选项卡。
  3. 启动板选项卡的联盟区域中,单击服务提供商管理
  4. 服务提供方管理选项卡上,单击创建身份提供方合作伙伴
  5. 一般信息区域中,输入身份提供商合作伙伴的名称,然后选择启用合作伙伴默认身份提供商合作伙伴。保存前,请先转到下一步。
  6. .在服务信息区域中:
    1. 选择 SAML2.0 作为协议。
    2. 选择从提供程序元数据加载
    3. 单击浏览(对于 Windows)或选择文件(对于 Mac),然后选择先前保存的 Azure AD SAML 元数据文件。
    4. 请先转至下一步,然后再保存。
  7. 映射选项区域中:
    1. 选择将用作为 E-Business Suite 用户检查的 Oracle Access Manager LDAP 身份存储库的用户身份存储库选项。通常,这已配置为 Oracle Access Manager 身份存储库。
    2. User Search Base DN 留空。将自动从身份存储库配置中选取搜索基础。
    3. 选择 Map assertion Name ID to User ID Store attribute ,然后在文本框中输入邮件。

    注:

    此配置定义 Azure AD 与 Oracle Access Manager 之间的用户映射。Oracle Access Manager 将获取传入 SAML 断言中 NameID 元素的值,并尝试在配置的身份存储库中的所有用户条目中根据邮件属性查找该值。因此,Azure AD 用户主体名称(在前面显示的 Azure AD 配置中)必须与 Oracle Access Manager 身份存储库中的 mail 属性同步。
  8. 单击保存以保存身份提供者合作伙伴。
  9. 保存合作伙伴后,返回选项卡底部的高级区域。确保配置了以下选项:
    • 选择了启用全局注销
    • 已选择 HTTP POST SSO 响应绑定。
      这是 Oracle Access Manager 在验证请求中发送的指示,告知 Azure AD 应如何传输 SAML 断言。如果检查 Oracle Access Manager 发送的验证请求,您将看到类似以下示例的内容。请注意示例中 AuthnRequest 元素的粗体 ProtocolBinding 属性。
      <?xml version="1.0"?>
      <samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
      xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"
      xmlns:enc="http://www.w3.org/2001/04/xmlenc#"
      xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
      xmlns:x500="urn:oasis:names:tc:SAML:2.0:profiles:attribute:X500"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      Destination="https://login.microsoftonline.com/4e39517e-7ef9-45a7-
      9751-6ef6f2d43429/saml2" ID="id-y5nmx61xB8QWXtDmYWcH7rPYs5zXtV-fcKRyyM9" IssueInstant="2019-04-23T17:01:25Z"
      ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
      Version="2.0">
      <saml:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameidformat:entity">http://myoamserver.mycompany.com:14100/oam/fed</saml:Is
      suer>
      <dsig:Signature>
      <dsig:SignedInfo>
      <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xmlexc-c14n#"/>
      <dsig:SignatureMethod
      Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
      <dsig:Reference URI="#id-y5nmx61xB8QWXtDmYWcH7rPYs5zXtV-fcKRy-yM9">
      <dsig:Transforms>
      <dsig:Transform
      Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
      <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
      </dsig:Transforms>
      <dsig:DigestMethod
      Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
      <dsig:DigestValue>pa00UWdqfywm4Qb59HioA6BhD18=</dsig:DigestValue>
      </dsig:Reference>
      </dsig:SignedInfo>
      <dsig:SignatureValue>X4eZRyFD6sznA0g3BJebU2c6ftunG2UvwbMptO+10wFky0aAL
      nnr0Na+5fF83U4Ut99OvAIZ41K3YMNaR4A8zr37SSlBrb72X7CTtxjh2mAphWDRPmkJx4v
      S0HACzZh0MHimdwq+qVXuFRbSLBE+9XNSGWJzGAh//WqGBlNrKnw=</dsig:SignatureV
      alue>
      </dsig:Signature>
      </samlp:AuthnRequest>
    • 未选择“启用 HTTP 基本验证(SSO Artifact 绑定)”。

      此设置要求 Azure AD 通过 HTTP POST 请求发送断言。收到此类请求时,身份提供者通常会创建一个 HTML 表单,将断言作为隐藏表单元素,该元素会自动发布到服务提供商的断言使用者服务(断言使用者服务,ACS)。

  10. 在 "General"(常规)区域中,单击 "Create Authentication Scheme and Module"(创建验证方案和模块)按钮。
    使用合作伙伴名称创建验证方案和模块。剩下的唯一配置是将验证方案附加到需要 Azure AD 凭证进行验证的 E-Business Suite 资源,您将在下一部分执行此操作。
  11. 您可以按照以下步骤检查创建的验证模块:
    1. 单击控制台顶部的 "Application Security"(应用程序安全)选项卡。
    2. 在“Plug-ins(插件)”下,选择“Authentication Modules(验证模块)”,单击“Search(搜索)”,然后查找您的联盟模块。
    3. 选择模块,然后单击“Steps(步骤)”选项卡。
    4. 请注意,FedSSOIdP 属性中的值为身份提供者合作伙伴

将 E-Business Suite 资源与验证方案关联

最终配置步骤是将 E-Business Suite 资源与验证方案关联。以管理员身份登录 Oracle Access Manager 控制台时执行这些步骤

  1. 在控制台顶部,单击 Application Security(应用程序安全性)
  2. 访问管理器下,选择应用程序域,单击搜索,然后选择在 E-Business Suite 脚本执行期间为已注册 E-Business Suite WebGate 的集成创建的应用程序域。
  3. 单击验证策略选项卡,然后单击受保护资源策略
    通过使用新的联盟验证方案更改以前创建的验证方案来更改验证方案。这是 Oracle Access Manager 将受保护资源与身份提供者关联的方式
  4. 单击应用保存更改。