3.11.3. GitHub サーバーでの認証
GitHub システムでの認証の設定は GitLab に似ています。
GitHub 認証は、個人アクセストークンの使用をベースとします。各 GitHub ユーザーは、異なる名前、パーミッション、有効期限などを持つ複数の個人アクセストークンを要求できます。これらのトークンを使用して、GitHub REST API 呼び出しに署名し、Git リポジトリー操作を実行することができます。
CodeReady Workspaces 側で GitHub 認証を許可するには、個人トークンをシークレット形式でユーザーのプロジェクトに保存する必要があります。シークレットは以下のようになります。
例3.11 GitHub 個人アクセストークンシークレット
apiVersion: v1 kind: Secret metadata: name: github-personal-access-token-secret labels: app.kubernetes.io/part-of: che.eclipse.org app.kubernetes.io/component: scm-personal-access-token annotations: che.eclipse.org/expired-after: '-1' che.eclipse.org/che-userid: '355d1ce5-990e-401e-9a8c-094bca10b5b3' che.eclipse.org/scm-userid: '1651062' che.eclipse.org/scm-username: 'user-foo' che.eclipse.org/scm-url: 'https://github.com' data: token: Yzh5cEt6cURxUWVCa3FKazhtaHg=
シークレットの主な部分は以下のようになります。
ラベル |
| SCM 個人トークンシークレットであることを示します。 |
アノテーション |
| トークンが属するユーザーの Red Hat CodeReady Workspaces ID。 |
アノテーション |
| トークンが属する GitHub ユーザー ID |
アノテーション |
| トークンが属する GitHub ユーザー名 |
アノテーション |
|
このトークンが属する GitHub サーバーの URL通常、これは |
アノテーション |
| 個人アクセストークンの有効期限 |
データエントリー |
| 個人アクセストークンの base-64 でエンコードされた値 |
Linux マシンで base64
ツールを使用して文字列を base64 形式にエンコードすると、ソース文字列の最後に改行文字が追加され、値はデコード後の認証ヘッダー値として使用できなくなります。これを回避するには、base64 -w0
を使用します。これにより、新たに追加された行が削除されるか、または 'tr -džn' を使用して改行が明示的に削除されます。
シークレットからユーザー ID を取得するには、REST API URL を呼び出します。
https://api.github.com/user
CodeReady Workspaces の場合
\https://codeready-<openshift_deployment_name>.<domain_name>/api/user
- シークレットから取得したトークン認証情報に関して、別のシークレットが自動的に作成され、Git 操作に対する認証が可能になります。このシークレットは Git 認証情報ファイルとしてワークスペースコンテナーにマウントされ、プライベート Git リポジトリーと連携するために追加の設定は不要になります。
- リモート Git リポジトリーが自己署名証明書を使用する場合は、サーバー設定を追加します。https://access.redhat.com/documentation/ja-jp/red_hat_codeready_workspaces/2.13/html-single/installation_guide/index#deploying-che-with-support-for-git-repositories-with-self-signed-certificates.adoc を参照してください。