第 4 章 使用 Microsoft Azure 进行身份验证


使用 Microsoft Azure 验证用户身份:

4.1. 使用 Microsoft Azure 启用身份验证

Red Hat Developer Hub 包括一个 Microsoft Azure 身份验证供应商,可以使用 OAuth 验证用户。

先决条件

  1. 您有在 Microsoft Azure 中注册应用程序的权限。

流程

  1. 要允许 Developer Hub 与 Microsoft Azure 进行身份验证,请在 Microsoft Azure 中创建 OAuth 应用程序

    1. 在 Azure 门户中 使用 配置创建新注册

      Name
      Azure 中的应用程序名称,如 < My Developer Hub>
    2. Home > App registrations > <My Developer Hub > > Manage &gt ; Authentication 页面中,使用以下配置添加平台

      重定向 URI
      输入 Developer Hub 中设置的后端身份验证 URI: https:// <my_developer_hub_url&gt; /api/auth/microsoft/handler/frame
      front-channel logout URL
      留空。
      隐式授权和混合流
      保留所有复选框都未清除。
    3. Home > App registrations &gt ; <My Developer Hub > > Manage &gt ; API permissions 页面中,添加 Permission,然后为 Microsoft Graph API 添加以下 委派权限

      • email
      • offline_access
      • openid
      • 配置集
      • user.Read.All
      • GroupMember.Read.All
      • 您在本节和 app-config.yaml Developer Hub 配置文件中定义的 Microsoft Graph API 的可选自定义范围。

您的公司可能需要您授予 admin 同意这些权限。即使您的公司不需要管理员同意,您可能也要这样做,因为这意味着用户在第一次访问阶段时不需要单独同意。要授予管理员同意,目录管理员必须进入管理员同意页面,然后单击 COMPANY NAME 的 Grant admin consent

  1. Home > App registrations > < My Developer Hub > > Manage > Certificates & Secrets 页的 Client secrets 选项卡中,创建一个 New client secret
  2. 保存下一步:

    • 目录(租户)ID
    • 应用程序(客户端)ID
    • 应用程序(客户端)secret

      1. 要将 Microsoft Azure 凭证添加到 Developer Hub,请将以下键/值对添加到 Developer Hub secret 中:

        AUTH_AZURE_TENANT_ID
        输入您保存的目录 (租户)ID
        AUTH_AZURE_CLIENT_ID
        输入您保存的 应用程序(客户端)ID
        AUTH_AZURE_CLIENT_SECRET
        输入您保存的 应用程序(客户端)secret
      2. app-config.yaml 文件中设置 Microsoft Azure 身份验证供应商:

        app-config.yaml 文件片段

        auth:
          environment: production 
        1
        
          providers:
            microsoft:
              production:
                clientId: ${AUTH_AZURE_CLIENT_ID} 
        2
        
                clientSecret: ${AUTH_AZURE_CLIENT_SECRET}
                tenantId: ${AUTH_AZURE_TENANT_ID}
        signInPage: microsoft 
        3

        1
        将环境标记为生产环境,并在 Developer Hub 登录页面中禁用 Guest login 选项。
        2
        应用在 Developer Hub secret 中配置的 Microsoft Azure 凭证。
        3
        将 Microsoft Azure 供应商设置为 Developer Hub 登录供应商。
  3. 可选: 考虑添加以下可选字段:

    domainHint

    可选的用于单租户应用程序。您可以通过从其他租户过滤出帐户,减少具有多个租户中帐户的登录侵权。如果要将此参数用于单租户应用,请取消注释并输入租户 ID。如果您的应用程序注册是多租户的,请将此参数留空。如需更多信息,请参阅 Home Realm Discovery

    带有可选 domainHint 字段的 app-config.yaml 文件片段

    auth:
      environment: production
      providers:
        microsoft:
          production:
            domainHint: ${AUTH_AZURE_TENANT_ID}

    additionalScopes

    可选用于其他范围。要为应用程序注册添加范围,取消注释并输入您要添加的范围列表。default 和 mandatory 值 list: 'openid', 'offline_access', 'profile', 'email', 'User.Read'.

    带有可选 additionalScopes 字段的 app-config.yaml 文件片段

    auth:
      environment: production
      providers:
        microsoft:
          production:
            additionalScopes:
               - Mail.Send

    sessionDuration

    用户会话的寿命。以 ms 库格式输入持续时间(如 '24h'、'2 days')、ISO 持续时间或 "human duration",如代码中使用的。

    带有可选 sessionDuration 字段的 app-config-rhdh.yaml 片段

    auth:
      providers:
        microsoft:
          production:
            sessionDuration: { hours: 24 }

    signIn
    解析器
    身份验证成功后,中的用户签名必须解析为 Developer Hub 目录中的现有用户。为了更好地为您的用例安全地匹配用户,请考虑配置特定的解析器。输入解析器列表以覆盖默认解析器: emailLocalPartMatchingUserEntityName

    身份验证提供程序尝试每个登录解析器按顺序尝试,直到成功为止,如果没有成功,则失败。

    警告

    在 production 模式中,只配置一个解析器以确保用户被安全地匹配。

    解析器

    输入登录解析器名称。可用的解析器:

    • userIdMatchingUserEntityAnnotation
    • emailLocalPartMatchingUserEntityName
    • emailMatchingUserEntityProfileEmail
    dangerouslyAllowSignInWithoutUserInCatalog: true

    配置登录解析器以绕过 Developer Hub 软件目录中的用户置备要求。

    警告

    使用 dangerouslyAllowSignInWithoutUserInCatalog 探索 Developer Hub 功能,但不要在生产环境中使用它。

    带有可选字段的 app-config-rhdh.yaml 片段,允许软件目录中缺少的用户签名

    auth:
      environment: production
      providers:
        microsoft:
          production:
            clientId: ${AUTH_AZURE_CLIENT_ID}
            clientSecret: ${AUTH_AZURE_CLIENT_SECRET}
            tenantId: ${AUTH_AZURE_TENANT_ID}
            signIn:
              resolvers:
                - resolver: usernameMatchingUserEntityName
                  dangerouslyAllowSignInWithoutUserInCatalog: true
    signInPage: microsoft

注意

对于具有传出访问限制的环境,此步骤是可选的,如防火墙规则。如果您的环境有这种限制,请确保您的 RHDH 后端可以访问以下主机:

  • login.microsoftonline.com :用于获取和交换授权代码和访问令牌。
  • graph.microsoft.com :用于检索用户配置文件信息(如源代码中引用)。如果这个主机无法访问,您可能会看到 Authentication failed,在尝试登录时无法获取用户配置集 错误。
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部