10.3.5.3. OAuth1 を使用するように Bitbucket および CodeReady Workspaces 統合を設定

以下のセクションでは、Bitbucket (BB)リポジトリーで読み取りおよび書き込み操作を実行するのに必要な OAuth 1 認証の設定を説明します。clonepush などの許可された Git 操作で BB リポジトリーを使用するには、最初に CodeReady Workspaces で BB エンドポイントを登録し、OAuth 1 認証を設定します。

注記

この手順では、以下が必要です。

  • RSA 鍵ペアの生成
  • コンシューマーのキーペアの生成
  • BB 側でのアプリケーションリンクの作成
  • CodeReady Workspaces サーバー側での BB の設定

この手順では、Bitbucket Server の OAuth 1 をアクティベートして以下を実行する方法を説明します。

前提条件

  • oc ツールが利用できる。
  • Bitbucket サーバーは、CodeReady Workspaces サーバーから利用できます。
  • CodeReady Workspaces のインスタンス

手順

  1. RSA キーペアと公開鍵の省略バージョンを生成します。

    $ openssl genrsa -out <private.pem> 2048
    $ openssl rsa -in <private.pem> -pubout > <public.pub>
    $ openssl pkcs8 -topk8 -inform pem -outform pem -nocrypt -in <private.pem> -out <privatepkcs8.pem>
    $ cat <public.pub> | sed 's/-----BEGIN PUBLIC KEY-----//g' | sed 's/-----END PUBLIC KEY-----//g' | tr -d '\n' > <public-stripped.pub>
  2. コンシューマーキーと共有シークレットを生成します。

    $ openssl rand -base64 24 > <bitbucket_server_consumer_key>
    $ openssl rand -base64 24 > <bitbucket_shared_secret>
  3. Bitbucket でアプリケーションリンクを設定し、CodeReady Workspaces から Bitbucket サーバーへの通信を有効にします。

    1. Bitbucket Server で上部のナビゲーションバーをクリックし、Administration > Application Links に移動します。
    2. アプリケーション URL: \https://codeready-<openshift_deployment_name>.<domain_name> を入力し、Create new link ボタンをクリックします。
    3. No response was received from the URLという警告メッセージが表示されたら Continue ボタンをクリックします。
    4. Link Applications フォームを入力し、Continue ボタンをクリックします。

      Application Name
      <CodeReady Workspaces>
      Application Type
      Generic Application
      Service Provider Name
      <CodeReady Workspaces>
      Consumer Key
      <bitbucket_server_consumer_key> ファイルの内容を貼り付けます。
      Shared secret
      <bitbucket_shared_secret> ファイルの内容を貼り付けます。
      Request Token URL
      <Bitbucket Server URL>/plugins/servlet/oauth/request-token
      アクセストークン URL
      <Bitbucket Server URL>/plugins/servlet/oauth/access-token
      Authorize URL
      <Bitbucket Server URL>/plugins/servlet/oauth/access-token
      Create incoming link
      Enabled
    5. Link Applications フォームを入力し、Continue ボタンをクリックします。

      Consumer Key
      <bitbucket_server_consumer_key> ファイルの内容を貼り付けます。
      Consumer name
      <CodeReady Workspaces>
      Public Key
      <public-stripped.pub> ファイルの内容を貼り付けます。
  4. コンシューマーおよびプライベートキーが含まれる OpenShift シークレットを CodeReady Workspaces プロジェクトに作成します。

    $ oc apply -f - <<EOF
    kind: Secret
    apiVersion: v1
    metadata:
      name: bitbucket-oauth-config
      namespace: <CodeReady Workspaces-namespace> 1
      labels:
        app.kubernetes.io/component: oauth-scm-configuration
        app.kubernetes.io/part-of: che.eclipse.org
      annotations:
        che.eclipse.org/oauth-scm-server: bitbucket
        che.eclipse.org/scm-server-endpoint: '<scm-server-endpoint>' 2
    type: Opaque
    data:
      private.key: '<user-private-key>' 3
      consumer.key: '<bitbucket_server_consumer_key>' 4
    EOF
    1
    CodeReady Workspaces namespace。デフォルトは openshift-workspaces です。
    2
    Bitbucket サーバー URL
    3
    最初の行と最後の行のない <privatepkcs8.pem> ファイルの base64 でエンコードされたコンテンツ。
    4
    <bitbucket_server_consumer_key> ファイルの base64 でエンコードされたコンテンツ。

    #!/usr/bin/env bash
    
    NS=${1:-eclipse-che}
    CONSUMER_KEY=$(cat ./certs/bitbucket_server_consumer_key)
    PRIVATE_KEY=$(cat ./certs/privatepkcs8.pem | sed 's/-----BEGIN PRIVATE KEY-----//g' |  sed 's/-----END PRIVATE KEY-----//g' | tr -d '\n')
    BITBUCKET_HOST='<your-bitbucket-host-here>'
    unameOut="$(uname -s)"
    
    case "${unameOut}" in
        Linux*)     BASE64_FUNC='base64 -w 0';;
        Darwin*)    BASE64_FUNC='base64';;
        CYGWIN*)    BASE64_FUNC='base64 -w 0';;
        MINGW*)     BASE64_FUNC='base64 -w 0';;
        *)          BASE64_FUNC='base64 -w 0'
    esac
    
    cat <<EOF | oc apply -n $NS -f -
    kind: Secret
    apiVersion: v1
    metadata:
      name: bitbucket-oauth-config
      labels:
        app.kubernetes.io/part-of: che.eclipse.org
        app.kubernetes.io/component: oauth-scm-configuration
      annotations:
        che.eclipse.org/oauth-scm-server: bitbucket
        che.eclipse.org/scm-server-endpoint: https://$BITBUCKET_HOST
    type: Opaque
    data:
      private.key: $(echo -n $PRIVATE_KEY | $BASE64_FUNC)
      consumer.key: $(echo -n $CONSUMER_KEY | $BASE64_FUNC)
    EOF