第4章 Microsoft Azure での認証


Microsoft Azure でユーザーを認証する場合:

4.1. Microsoft Azure での認証の有効化

Red Hat Developer Hub には、OAuth を使用してユーザーを認証できる Microsoft Azure 認証プロバイダーが組み込まれています。

前提条件

  1. Microsoft Azure にアプリケーションを登録する権限がある。

手順

  1. Developer Hub が Microsoft Azure で認証できるようにするために、Microsoft Azure で OAuth アプリケーションを作成 します。

    1. Azure ポータルで App registrations に移動し、次の設定で New registration を作成します。

      名前
      Azure 内のアプリケーション名 (例: <My Developer Hub>)
    2. Home > App registrations > <My Developer Hub> > Manage > Authentication ページで、次の設定で プラットフォームを追加 します。

      Redirect URI
      Developer Hub で設定されたバックエンド認証 URI (https://<my_developer_hub_url>/api/auth/microsoft/handler/frame) を入力します。
      Front-channel logout URL
      空白のままにします。
      Implicit grant and hybrid flows
      すべてのチェックボックスをオフのままにします。
    3. Home > App registrations > <My Developer Hub> > Manage > API permissions ページで、権限を追加 してから、Microsoft Graph API の次の 委任された権限 を追加します。

      • email
      • offline_access
      • openid
      • profile
      • User.Read
      • Microsoft Graph API のオプションのカスタムスコープ。これは、このセクションと Developer Hub 設定ファイル app-config.yaml の両方で定義します。

企業によっては、これらの権限に対して管理者の同意を与えることが必要な場合があります。管理者の同意が必要ない場合でも、管理者の同意を与える場合があります。そうすることで、ユーザーが初めて Backstage にアクセスするときに、個別に同意する必要がなくなるためです。管理者の同意を付与するには、ディレクトリー管理者は admin consent ページに移動し、Grant admin consent for COMPANY NAME をクリックする必要があります。

  1. Home > App registrations > <My Developer Hub> > Manage > Certificates & Secrets ページの Client secrets タブで、新しいクライアントシークレット を作成します。
  2. 次のステップのために保存します。

    • ディレクトリー (テナント) ID
    • アプリケーション (クライアント) ID
    • アプリケーション (クライアント) シークレット

      1. Microsoft Azure 認証情報を Developer Hub に追加するには、以下のキーと値のペアを Developer Hub シークレット に追加します。

        AUTH_AZURE_TENANT_ID
        保存した ディレクトリー (テナント) ID を入力します。
        AUTH_AZURE_CLIENT_ID
        保存した アプリケーション (クライアント) ID を入力します。
        AUTH_AZURE_CLIENT_SECRET
        保存した アプリケーション (クライアント) シークレット を入力します。
      2. app-config.yaml ファイルで Microsoft Azure 認証プロバイダーを設定します。

        app-config.yaml ファイルのフラグメント

        auth:
          environment: production
          providers:
            microsoft:
              production:
                clientId: ${AUTH_AZURE_CLIENT_ID}
                clientSecret: ${AUTH_AZURE_CLIENT_SECRET}
                tenantId: ${AUTH_AZURE_TENANT_ID}
        signInPage: microsoft
        Copy to Clipboard Toggle word wrap

        environment: production
        環境を production とマークすると、Developer Hub のホームページで ゲスト ログインが非表示になります。
        clientIdclientSecrettenantId
        Microsoft Azure で作成し、OpenShift でシークレットとして設定した Developer Hub アプリケーション情報を使用します。
        signInPage: microsoft
        Microsoft Azure プロバイダーをデフォルトのサインインプロバイダーとして有効にします。

オプション: 次のオプションフィールドを追加することを検討してください。

dangerouslyAllowSignInWithoutUserInCatalog: true

Developer Hub ソフトウェアカタログでユーザーをプロビジョニングする必要なく認証を有効にします。

警告

Developer Hub の機能を調べるには dangerouslyAllowSignInWithoutUserInCatalog を使用しますが、実稼働環境では使用しないでください。

ソフトウェアカタログに存在しないユーザーを認証できるようにするオプションフィールドを含む 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}
signInPage: microsoft
dangerouslyAllowSignInWithoutUserInCatalog: true
Copy to Clipboard Toggle word wrap

domainHint

シングルテナントアプリケーションの場合は任意です。他のテナントのアカウントを自動的に除外することで、複数のテナントにアカウントを持つユーザーのログインの手間を軽減できます。このパラメーターをシングルテナントアプリケーションで使用する場合は、コメントを解除してテナント ID を入力します。アプリケーション登録がマルチテナントの場合は、このパラメーターを空白のままにします。詳細は、Home Realm Discovery を参照してください。

オプションの domainHint フィールドを含む app-config.yaml ファイルのフラグメント

auth:
  environment: production
  providers:
    microsoft:
      production:
        domainHint: ${AUTH_AZURE_TENANT_ID}
Copy to Clipboard Toggle word wrap

additionalScopes

追加のスコープの場合は任意です。アプリケーション登録のスコープを追加するには、コメントを解除して、追加するスコープのリストを入力します。デフォルトおよび必須の値のリストは 'openid', 'offline_access', 'profile', 'email', 'User.Read' です。

オプションの additionalScopes フィールドを含む app-config.yaml ファイルのフラグメント

auth:
  environment: production
  providers:
    microsoft:
      production:
        additionalScopes:
           - Mail.Send
Copy to Clipboard Toggle word wrap

注記

ファイアウォールルールなどの送信アクセス制限がある環境では、このステップはオプションになります。環境にこのような制限がある場合は、RHDH バックエンドが次のホストにアクセスできることを確認してください。

  • login.microsoftonline.com: 認可コードとアクセストークンを取得および交換します。
  • graph.microsoft.com: ユーザープロファイル情報を取得します (ソースコードで参照)。このホストにアクセスできない場合は、ログインしようとすると Authentication failed, failed to fetch user profile というエラーが表示されることがあります。

Microsoft Azure からソフトウェアカタログへのユーザーのプロビジョニング

Microsoft Azure でユーザーを認証するには、Microsoft Azure での認証を有効化 した後、Microsoft Azure から Developer Hub ソフトウェアカタログにユーザーをプロビジョニングします。

手順

  • Microsoft Azure メンバー検出を有効にするには、app-config-rhdh などのカスタム Developer Hub ConfigMap を編集し、app-config.yaml コンテンツに次の行を追加します。

    必須の microsoftGraphOrg フィールドを含む app-config.yaml フラグメント

    dangerouslyAllowSignInWithoutUserInCatalog: false
    catalog:
      providers:
        microsoftGraphOrg:
          providerId:
            target: https://graph.microsoft.com/v1.0
            tenantId: ${AUTH_AZURE_TENANT_ID}
            clientId: ${AUTH_AZURE_CLIENT_ID}
            clientSecret: ${AUTH_AZURE_CLIENT_SECRET}
    Copy to Clipboard Toggle word wrap

    dangerouslyAllowSignInWithoutUserInCatalog: false
    Developer Hub ソフトウェアカタログ内のユーザーのみに認証を許可します。
    target: https://graph.microsoft.com/v1.0
    プロバイダーが接続する MSGraph API エンドポイントを定義します。ベータエンドポイント などの別のバージョンを使用するには、このパラメーターを変更することを推奨します。
    tenandIdclientIdclientSecret
    Microsoft Azure で作成し、OpenShift でシークレットとして設定した Developer Hub アプリケーション情報を使用します。

オプション: 次のオプションの microsoftGraphOrg.providerId フィールドを追加することを検討してください。

authority: https://login.microsoftonline.com

使用する機関を定義します。Azure US government などの別の 機関 を使用するには、値を変更します。デフォルト値は https://login.microsoftonline.com です。

オプションの queryMode フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        authority: https://login.microsoftonline.com/
Copy to Clipboard Toggle word wrap

queryMode: basic | advanced

デフォルトでは、Microsoft Graph API はクエリー用に basic 機能セットのみを提供します。特定の機能には advanced クエリー機能が必要です。Microsoft Azure Advanced queries を参照してください。

オプションの queryMode フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        queryMode: advanced
Copy to Clipboard Toggle word wrap

user.expand

単一のリレーションシップ (ナビゲーションプロパティー) によって参照される拡張リソースまたはコレクションを結果に含めます。1 回のリクエストで拡張できる関係は 1 つだけです。Microsoft Graph query expand parameter を参照してください。このパラメーターは ] or xref:userFilter[ と組み合わせることができます。

オプションの user.expand フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        user:
          expand: manager
Copy to Clipboard Toggle word wrap

user.filter

ユーザーをフィルタリングします。Microsoft Graph API および Microsoft Graph API query filter parameters syntax を参照してください。このパラメーターと ???TITLE??? は相互に排他的であるため、いずれか 1 つだけを指定できます。

オプションの user.filter フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        user:
          filter: accountEnabled eq true and userType eq 'member'
Copy to Clipboard Toggle word wrap

user.loadPhotos: true | false

デフォルトで写真をロードします。ユーザーの写真をロードしない場合は false に設定します。

オプションの user.loadPhotos フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        user:
          loadPhotos: true
Copy to Clipboard Toggle word wrap

user.select

取得する Microsoft Graph リソースの種類 を定義します。

オプションの user.select フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        user:
          select: ['id', 'displayName', 'description']
Copy to Clipboard Toggle word wrap

userGroupMember.filter

グループメンバーシップを使用してユーザーを取得します。グループをフィルタリングし、そのメンバーを取得します。このパラメーターと ???TITLE??? は、相互に排他的であるため、いずれか 1 つだけを指定できます。

オプションの userGroupMember.filter フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        userGroupMember:
          filter: "displayName eq 'Backstage Users'"
Copy to Clipboard Toggle word wrap

userGroupMember.search

グループメンバーシップを使用してユーザーを取得します。グループを検索し、そのメンバーを取得します。このパラメーターと ???TITLE??? は、相互に排他的であるため、いずれか 1 つだけを指定できます。

オプションの userGroupMember.search フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        userGroupMember:
          search: '"description:One" AND ("displayName:Video" OR "displayName:Drive")'
Copy to Clipboard Toggle word wrap

group.expand

単一のリレーションシップ (ナビゲーションプロパティー) によって参照される拡張リソースまたはコレクションを結果に含めるためのオプションのパラメーター。1 回のリクエストで拡張できる関係は 1 つだけです。https://docs.microsoft.com/en-us/graph/query-parameters#expand-parameter を参照してください。このパラメーターは、] instead of xref:userFilter[ と組み合わせることができます。

オプションの group.expand フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        group:
          expand: member
Copy to Clipboard Toggle word wrap

group.filter

グループをフィルタリングします。Microsoft Graph API query group syntax を参照してください。

オプションの group.filter フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        group:
          filter: securityEnabled eq false and mailEnabled eq true and groupTypes/any(c:c+eq+'Unified')
Copy to Clipboard Toggle word wrap

group.search

グループを検索します。Microsoft Graph API query search parameter を参照してください。

オプションの group.search フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        group:
          search: '"description:One" AND ("displayName:Video" OR "displayName:Drive")'
Copy to Clipboard Toggle word wrap

group.select

取得する Microsoft Graph リソースの種類 を定義します。

オプションの group.select フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        group:
          select: ['id', 'displayName', 'description']
Copy to Clipboard Toggle word wrap

schedule.frequency

カスタムスケジュールの頻度を指定します。コード内で使用される cron、ISO 期間、および "人間が判読可能な期間" をサポートします。

オプションの schedule.frequency フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        schedule:
          frequency: { hours: 1 }
Copy to Clipboard Toggle word wrap

schedule.timeout

カスタムタイムアウトを指定します。コード内で使用される ISO 期間と "人間が判読可能な期間" をサポートします。

オプションの schedule.timeout フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        schedule:
          timeout: { minutes: 50 }
Copy to Clipboard Toggle word wrap

schedule.initialDelay

カスタム初期遅延を指定します。コード内で使用される ISO 期間と "人間が判読可能な期間" をサポートします。

オプションの schedule.initialDelay フィールドを含む app-config.yaml フラグメント

catalog:
  providers:
    microsoftGraphOrg:
      providerId:
        schedule:
          initialDelay: { seconds: 15}
Copy to Clipboard Toggle word wrap

検証

  1. コンソールログをチェックして、同期が完了したことを確認します。

    同期が成功した例:

    backend:start: {"class":"MicrosoftGraphOrgEntityProvider$1","level":"info","message":"Read 1 msgraph users and 1 msgraph groups in 2.2 seconds. Committing...","plugin":"catalog","service":"backstage","taskId":"MicrosoftGraphOrgEntityProvider:default:refresh","taskInstanceId":"88a67ce1-c466-41a4-9760-825e16b946be","timestamp":"2024-06-26 12:23:42"}
    backend:start: {"class":"MicrosoftGraphOrgEntityProvider$1","level":"info","message":"Committed 1 msgraph users and 1 msgraph groups in 0.0 seconds.","plugin":"catalog","service":"backstage","taskId":"MicrosoftGraphOrgEntityProvider:default:refresh","taskInstanceId":"88a67ce1-c466-41a4-9760-825e16b946be","timestamp":"2024-06-26 12:23:42"}
    Copy to Clipboard Toggle word wrap

  2. Microsoft Azure アカウントでログインします。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat