第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
このセクションと Developer Hub 設定 (
app-config-rhdh.yaml
) の両方で定義する Microsoft Graph API のオプションのカスタムスコープ。注記企業によっては、これらの権限に対して管理者の同意を与えることが必要な場合があります。管理者の同意が必要ない場合でも、管理者の同意を与える場合があります。そうすることで、ユーザーが初めて 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-rhdh
などの Developer Hub カスタム設定で Microsoft Azure 認証プロバイダーをセットアップします。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
environment: production
- 環境を production とマークすると、Developer Hub のホームページで ゲスト ログインが非表示になります。
clientId
、clientSecret
、tenantId
- 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
domainHint
シングルテナントアプリケーションの場合は任意です。他のテナントのアカウントを自動的に除外することで、複数のテナントにアカウントを持つユーザーのログインの手間を軽減できます。このパラメーターをシングルテナントアプリケーションで使用する場合は、コメントを解除してテナント ID を入力します。アプリケーション登録がマルチテナントの場合は、このパラメーターを空白のままにします。詳細は、Home Realm Discovery を参照してください。
オプションの
domainHint
フィールドを含むapp-config-rhdh.yaml
フラグメントauth: environment: production providers: microsoft: production: domainHint: ${AUTH_AZURE_TENANT_ID}
additionalScopes
追加のスコープの場合は任意です。アプリケーション登録のスコープを追加するには、コメントを解除して、追加するスコープのリストを入力します。デフォルトおよび必須の値のリストは
'openid', 'offline_access', 'profile', 'email', 'User.Read'
です。オプションの
additionalScopes
フィールドを含むapp-config-rhdh.yaml
フラグメントauth: environment: production providers: microsoft: production: additionalScopes: - Mail.Send
ファイアウォールルールなどの送信アクセス制限がある環境では、このステップはオプションになります。環境にこのような制限がある場合は、RHDH バックエンドが次のホストにアクセスできることを確認してください。
-
login.microsoftonline.com
: 認可コードとアクセストークンを取得および交換します。 -
graph.microsoft.com
: ユーザープロファイル情報を取得します (ソースコードで参照)。このホストにアクセスできない場合は、ログインしようとすると Authentication failed, failed to fetch user profile というエラーが表示されることがあります。