This documentation is for a release that is no longer maintained
See documentation for the latest supported version.第4章 Microsoft Azure での認証
Microsoft Azure でユーザーを認証する場合:
4.1. Microsoft Azure での認証の有効化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Developer Hub には、OAuth を使用してユーザーを認証できる Microsoft Azure 認証プロバイダーが組み込まれています。
前提条件
Microsoft Azure にアプリケーションを登録する権限がある。
- カスタム Developer Hub アプリケーション設定を追加 している。また、それを変更するための十分な権限を持っている。
手順
Developer Hub が Microsoft Azure で認証できるようにするために、Microsoft Azure で OAuth アプリケーションを作成 します。
Azure ポータルで App registrations に移動し、次の設定で New registration を作成します。
- 名前
- Azure 内のアプリケーション名 (例: <My Developer Hub>)
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
- すべてのチェックボックスをオフのままにします。
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 をクリックする必要があります。
- Home > App registrations > <My Developer Hub> > Manage > Certificates & Secrets ページの Client secrets タブで、新しいクライアントシークレット を作成します。
次のステップのために保存します。
- ディレクトリー (テナント) ID
- アプリケーション (クライアント) ID
アプリケーション (クライアント) シークレット
Microsoft Azure 認証情報を Developer Hub に追加するには、以下のキーと値のペアを Developer Hub シークレット に追加します。
AUTH_AZURE_TENANT_ID- 保存した ディレクトリー (テナント) ID を入力します。
AUTH_AZURE_CLIENT_ID- 保存した アプリケーション (クライアント) ID を入力します。
AUTH_AZURE_CLIENT_SECRET- 保存した アプリケーション (クライアント) シークレット を入力します。
app-config.yamlファイルで Microsoft Azure 認証プロバイダーを設定します。app-config.yamlファイルのフラグメントCopy to Clipboard Copied! Toggle word wrap Toggle overflow environment: production- 環境を production とマークすると、Developer Hub のホームページで ゲスト ログインが非表示になります。
clientId、clientSecret、tenantId- Microsoft Azure で作成し、OpenShift でシークレットとして設定した Developer Hub アプリケーション情報を使用します。
signInPage: microsoft- Microsoft Azure プロバイダーをデフォルトのサインインプロバイダーとして有効にします。
オプション: 次のオプションフィールドを追加することを検討してください。
dangerouslyAllowSignInWithoutUserInCatalog: trueDeveloper Hub ソフトウェアカタログでユーザーをプロビジョニングする必要なく認証を有効にします。
警告Developer Hub の機能を調べるには
dangerouslyAllowSignInWithoutUserInCatalogを使用しますが、実稼働環境では使用しないでください。ソフトウェアカタログに存在しないユーザーを認証できるようにするオプションフィールドを含む
app-config-rhdh.yamlフラグメントCopy to Clipboard Copied! Toggle word wrap Toggle overflow domainHintシングルテナントアプリケーションの場合は任意です。他のテナントのアカウントを自動的に除外することで、複数のテナントにアカウントを持つユーザーのログインの手間を軽減できます。このパラメーターをシングルテナントアプリケーションで使用する場合は、コメントを解除してテナント ID を入力します。アプリケーション登録がマルチテナントの場合は、このパラメーターを空白のままにします。詳細は、Home Realm Discovery を参照してください。
オプションの
domainHintフィールドを含むapp-config.yamlファイルのフラグメントCopy to Clipboard Copied! Toggle word wrap Toggle overflow additionalScopes追加のスコープの場合は任意です。アプリケーション登録のスコープを追加するには、コメントを解除して、追加するスコープのリストを入力します。デフォルトおよび必須の値のリストは
'openid', 'offline_access', 'profile', 'email', 'User.Read'です。オプションの
additionalScopesフィールドを含むapp-config.yamlファイルのフラグメントCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ファイアウォールルールなどの送信アクセス制限がある環境では、このステップはオプションになります。環境にこのような制限がある場合は、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フラグメントCopy to Clipboard Copied! Toggle word wrap Toggle overflow dangerouslyAllowSignInWithoutUserInCatalog: false- Developer Hub ソフトウェアカタログ内のユーザーのみに認証を許可します。
target: https://graph.microsoft.com/v1.0- プロバイダーが接続する MSGraph API エンドポイントを定義します。ベータエンドポイント などの別のバージョンを使用するには、このパラメーターを変更することを推奨します。
tenandId、clientId、clientSecret- 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/catalog: providers: microsoftGraphOrg: providerId: authority: https://login.microsoftonline.com/Copy to Clipboard Copied! Toggle word wrap Toggle overflow
queryMode: basic | advancedデフォルトでは、Microsoft Graph API はクエリー用に
basic機能セットのみを提供します。特定の機能にはadvancedクエリー機能が必要です。Microsoft Azure Advanced queries を参照してください。オプションの
queryModeフィールドを含むapp-config.yamlフラグメントcatalog: providers: microsoftGraphOrg: providerId: queryMode: advancedcatalog: providers: microsoftGraphOrg: providerId: queryMode: advancedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
user.expand単一のリレーションシップ (ナビゲーションプロパティー) によって参照される拡張リソースまたはコレクションを結果に含めます。1 回のリクエストで拡張できる関係は 1 つだけです。Microsoft Graph query expand parameter を参照してください。このパラメーターは ] or xref:userFilter[ と組み合わせることができます。
オプションの
user.expandフィールドを含むapp-config.yamlフラグメントCopy to Clipboard Copied! Toggle word wrap Toggle overflow
user.filterユーザーをフィルタリングします。Microsoft Graph API および Microsoft Graph API query filter parameters syntax を参照してください。このパラメーターと ???TITLE??? は相互に排他的であるため、いずれか 1 つだけを指定できます。
オプションの
user.filterフィールドを含むapp-config.yamlフラグメントCopy to Clipboard Copied! Toggle word wrap Toggle overflow
user.loadPhotos: true | falseデフォルトで写真をロードします。ユーザーの写真をロードしない場合は
falseに設定します。オプションの
user.loadPhotosフィールドを含むapp-config.yamlフラグメントCopy to Clipboard Copied! Toggle word wrap Toggle overflow
user.select取得する Microsoft Graph リソースの種類 を定義します。
オプションの
user.selectフィールドを含むapp-config.yamlフラグメントCopy to Clipboard Copied! Toggle word wrap Toggle overflow
userGroupMember.filterグループメンバーシップを使用してユーザーを取得します。グループをフィルタリングし、そのメンバーを取得します。このパラメーターと ???TITLE??? は、相互に排他的であるため、いずれか 1 つだけを指定できます。
オプションの
userGroupMember.filterフィールドを含むapp-config.yamlフラグメントCopy to Clipboard Copied! Toggle word wrap Toggle overflow
userGroupMember.searchグループメンバーシップを使用してユーザーを取得します。グループを検索し、そのメンバーを取得します。このパラメーターと ???TITLE??? は、相互に排他的であるため、いずれか 1 つだけを指定できます。
オプションの
userGroupMember.searchフィールドを含むapp-config.yamlフラグメントCopy to Clipboard Copied! Toggle word wrap Toggle overflow
group.expand単一のリレーションシップ (ナビゲーションプロパティー) によって参照される拡張リソースまたはコレクションを結果に含めるためのオプションのパラメーター。1 回のリクエストで拡張できる関係は 1 つだけです。https://docs.microsoft.com/en-us/graph/query-parameters#expand-parameter を参照してください。このパラメーターは、] instead of xref:userFilter[ と組み合わせることができます。
オプションの
group.expandフィールドを含むapp-config.yamlフラグメントCopy to Clipboard Copied! Toggle word wrap Toggle overflow
group.filterグループをフィルタリングします。Microsoft Graph API query group syntax を参照してください。
オプションの
group.filterフィールドを含むapp-config.yamlフラグメントCopy to Clipboard Copied! Toggle word wrap Toggle overflow
group.searchグループを検索します。Microsoft Graph API query search parameter を参照してください。
オプションの
group.searchフィールドを含むapp-config.yamlフラグメントCopy to Clipboard Copied! Toggle word wrap Toggle overflow
group.select取得する Microsoft Graph リソースの種類 を定義します。
オプションの
group.selectフィールドを含むapp-config.yamlフラグメントCopy to Clipboard Copied! Toggle word wrap Toggle overflow schedule.frequencyカスタムスケジュールの頻度を指定します。コード内で使用される cron、ISO 期間、および "人間が判読可能な期間" をサポートします。
オプションの
schedule.frequencyフィールドを含むapp-config.yamlフラグメントCopy to Clipboard Copied! Toggle word wrap Toggle overflow schedule.timeoutカスタムタイムアウトを指定します。コード内で使用される ISO 期間と "人間が判読可能な期間" をサポートします。
オプションの
schedule.timeoutフィールドを含むapp-config.yamlフラグメントCopy to Clipboard Copied! Toggle word wrap Toggle overflow schedule.initialDelayカスタム初期遅延を指定します。コード内で使用される ISO 期間と "人間が判読可能な期間" をサポートします。
オプションの
schedule.initialDelayフィールドを含むapp-config.yamlフラグメントCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
コンソールログをチェックして、同期が完了したことを確認します。
同期が成功した例:
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"}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 Copied! Toggle word wrap Toggle overflow - Microsoft Azure アカウントでログインします。