各バックエンドを利用するための準備
************************************

ここでは Unicorn ID Manager で各バックエンドを利用する前に
実施する必要のある作業について説明します。

ここでは、以下のバックエンドの事前準備の作業について記載しています。

* Windows Server の Active Directory
* Google G Suite (旧名 Google Apps)
* Azure Active Directory (Office365)

Windows Server の Active Directory
=====================================

Windows Server の Active Directory をバックエンドにするためには、
Windows Server に **証明書サービス** をインストールし、
インストール後に Windows Server の再起動が必要となります。

**証明書サービス** は PowerShell から以下のコマンドを
実行することでインストールできます。
証明書の有効期限等は運用ポリシーに合わせて任意の値を指定してください。

::

    PS > Add-WindowsFeature ADCS-Cert-Authority -IncludeManagementTools
    PS > Install-AdcsCertificationAuthority -CAType EnterpriseRootCA `
         -ValidityPeriod Years -ValidityPeriodUnits 10 `
         -HashAlgorithmName SHA256 `
         -KeyLength 2048

Google G Suite
==============

Google G Suite (旧名 Google Apps) をバックエンドにするためには、
Google API コンソールでサービスアカウントにキーを作成し、
Google 管理コンソールでサービスアカウントのクライアント ID に
対して API のアクセスを承認する必要があります。

以下に作業の概要を示します。

a. Google API コンソール
    1. Google API コンソールを開く。
    2. 組織 (G Suite ドメイン) にプロジェクトを作成する。
    3. プロジェクトの Admin SDK の API を有効にする。
    4. プロジェクトにサービスアカウントを作成する。
    5. サービスアカウントの G Suite ドメイン全体の委任を有効にする。
    6. サービスアカウントのサービスアカウントキー (JSON キー) を作成する。
    7. サービスアカウントのクライアント ID を控える。
b. Google 管理コンソール
    1. セキュリティの詳細設定の API クライアントのアクセス管理で
       クライアント ID に対して API の範囲を承認する。

以下に作業の詳細を示します。なお、ここではすでに Google G Suite の
管理者アカウントが設定済みであることを前提とします。

API サービスアカウントとキーの作成
----------------------------------

1. Google API コンソール https://console.developers.google.com/ に
   アクセスして、管理権限を持つ Google アカウントでログインする。

   - ほかの Google アカウントでログイン済みの場合は、ページ
     上部メニューバー右端のアイコンをクリックして別のアカウントを
     選択するか、**アカウントを追加** ボタンを押して追加する。

2. プロジェクトを作成する。名前は任意。

   - ページ上部メニューバーの組織 (G Suite ドメイン) 選択プルダウン
     メニューからドメインを選択してから、同じくページ上部メニューバー
     内のプロジェクト選択プルダウンメニューを開いて
     **プロジェクトを作成** を開く。

3. プロジェクトの Admin SDK API を有効にする。

   - ページ上部メニューバー左のハンバーガーメニューから **API Manager**
     を開き、左ペインの **ライブラリ** を開き、**Google Apps API** 節の
     **Admin SDK** を開き、**有効にする** を実行する。

4. プロジェクトにサービスアカウントを作成する。名前は任意、
   役割りは不要、**G Suite ドメイン全体の委任を有効にする**
   チェックボックスを有効にして作成。

   - ページ上部メニューバー左のハンバーガーメニューから **IAM と管理**
     を開き、左ペインの **サービス アカウント** を開き、
     **サービス アカウントを作成** を実行する。

5. 既存のサービスアカウントの **G Suite ドメイン全体の委任を有効にする**
   場合は、**IAM と管理** の **サービスアカウント** 画面の
   サービスアカウント一覧右のハンバーガーメニューから **編集** する。

6. サービスアカウントのサービスアカウントキーを作成する。

   - **IAM と管理** の **サービスアカウント** 画面のサービスアカウント
     一覧右のハンバーガーメニューから **キーを作成** する。
     **キーのタイプ** は **JSON** を選択する。

   - **作成** するとサービスアカウントキー (JSON キー) がダウンロード
     されるので、Unicorn IDM の設定ディレクトリ下に保存する。
     このファイルには Google G Suite の API を利用するための秘密鍵が
     格納されているため、 Unicorn ID Manager を実行するプロセス以外
     から参照できないようにする。。

7. サービスアカウントのクライアント ID を控える。

   - **IAM と管理** の **サービスアカウント** 画面のサービスアカウント
     一覧右の **オプション** 欄の **クライアント ID を表示** を参照する。

Google G Suite ドメインの権限を API に委譲
------------------------------------------

1. Google 管理コンソール http://admin.google.com/ にアクセスして、
   管理権限を持つ Google アカウントでログインする。

2. ホーム画面もしくは ページ上部メニューバー左のハンバーガーメニュー
   から **セキュリティ** を開き、**詳細設定** を開き、
   **認証** 節の **API クライアント アクセスを管理する** を開く。

3. **クライアント名** 欄に先に控えたサービスアカウントのクライアント ID、
   **1 つ以上の API の範囲** 欄に下記の内容を入力して **承認**
   ボタンを押す。

   ::

       https://www.googleapis.com/auth/admin.directory.user,https://www.googleapis.com/auth/admin.directory.group,https://www.googleapis.com/auth/admin.directory.orgunit


Azure Active Directory (Office365)
====================================

Azure Active Directory (Azure AD) をバックエンドにするためには、
以下に示す手順を `SKU の名前を取得`_ 以外をすべて実施してください。

`SKU の名前を取得`_ はユーザーにライセンスを付与する際に必要な情報を取得する
ために必要です。

なお、ここではすでに Azure AD の 管理者アカウントが設定済みで、
かつ Azure AD の言語設定が日本語であることを前提とします。

アプリケーション ID の作成
---------------------------

1. https://manage.windowsazure.com/ にアクセス

   - Azure AD サブスクリプションが未登録の場合
     `こちら <https://technet.microsoft.com/library/dn832618.aspx>`_ のページを参考に、
     登録を行ってください。

2. **Active Directory -> <自組織> -> アプリケーション** をクリックして、 **追加** をクリック

3. **組織で開発中のアプリケーションを追加** をクリックし、 **名前** に任意の名前を入力。
   **WEB アプリケーションや WEB API** がチェックされていることを確認し、 次へ (右矢印 をクリック)

4. Unicorn ID Manager はシングルサインオンを利用しないため、 **サインオン URL** と
   **アプリケーション ID/URI** は URL 形式の任意の一意な文字列を入力して終了 (チェックマークをクリック)

   - 例えば、 **https://uidm.example.com/** を入力

5. **構成** をクリックし、 **キー -> 時間の選択** から **1 年** か **2 年** を選択し、 **保存** をクリック

6. 表示されたキー値を控える

   -  以降、この値は表示されなくなります

   - キー値は流出しないように厳重に保管してください

7. **クライアント ID** の値を控える

アプリケーション ID にロールを割り当て
----------------------------------------

1. Windows 端末にて PowerShell 用の Azure AD モジュールをインストール
   (http://msdn.microsoft.com/library/azure/jj151815.aspx からダウンロード)

2. PowerShell を開き、以下のコマンドを実行
   (*<APPNAME>* は `アプリケーション ID の作成`_ の 3. で作成した名前)

   ::

       $APPNAME = "<APPNAME>"
       Import-Module MSOnline
       Connect-MsolService
       Add-MsolRoleMember -RoleName "User Account Administrator" -RoleMemberType ServicePrincipal -RoleMemberObjectId (Get-MsolServicePrincipal -SearchString $APPNAME).ObjectId

SKU の名前を取得
------------------

1. Windows 端末にて PowerShell 用の Azure AD モジュールをインストール
   (http://msdn.microsoft.com/library/azure/jj151815.aspx からダウンロード)

2. PowerShell を開きサブスクリプションごとに割り当てられている SKU の名前 を取得

   ::

       Import-Module MSOnline
       Connect-MsolService
       Get-MsolAccountSku | Select-Object -Property SkuPartNumber

3. 出力された情報のうち SkuPartNumber の列以下の情報を控える
   (たとえば、以下のような出力が得られます)

   ::

       SkuPartNumber
       -------------
       STANDARDPACK
