Azure (Office365) Active Directory バックエンド
===============================================

概要
-----

::

    unicornidm.conf, templates/<name>.py

説明
------

バックエンドセクションのうち、 *type* が *azure* となっているバックエンドは、
Azure Active Directory ドメインコントローラー (Azure AD) への接続に関する設定を行います。

各バックエンドには必ずテンプレートファイルを用意する必要があります。
テンプレートファイルとは Unicorn ID Manager の任意属性 (フロントエンド属性)
をバックエンド固有の属性 (バックエンド属性) にマッピングするためのものです。

パラメーター
--------------

type
    バックエンドのタイプを指定します。

domain
    接続する Azure AD のドメイン名を指定します。

bind_user
    Azure AD へ接続する際に使用するクライアント ID を指定します。

bind_password_file
    Azure AD へ接続するクライアント ID のパスワード情報を格納したファイルパスを指定します。

backend_primary_key_user
    ユーザーを一意に特定するための Azure バックエンド属性を指定します。
    デフォルト値は userPrincipalName です。

backend_primary_key_group
    グループを一意に特定するための Azure バックエンド属性を指定します。
    デフォルト値は displayName です。

require_immutaleId
    ユーザー登録時に、 immutableId を登録するかどうかを指定します。
    デフォルト値は yes (immutableId を登録する) です。

テンプレート
-------------

以下は、 azure のテンプレートファイルの例です。

::

    User = {
        "userPrincipalName": userName,
        "immutableId": default(immutableId),
        "displayName": default(displayName, "%(familyName)s %(givenName)s"),
        "surname": familyName,
        "givenName": givenName,
        "mailNickname": userName,
        "accountEnabled": default(active, True),
        "passwordProfile": {
          "password": password,
          "forceChangePasswordNextLogin": default(forceChangePasswordNextLogin, True),
        },
        "passwordPolicies": "DisablePasswordExpiration,DisableStrongPassword",
        "usageLocation": default(usageLocation, "JP"),
        "assignedLicenses": default(azureLicense),
    }


    Group = {
        "displayName": groupName,
        "mailNickname": groupName,
        "mailEnabled": False,
        "securityEnabled": True,
        "description": default(description),
    }

注意すべき点は以下のとおりです。

* User の辞書には必ず userPrincipalName バックエンド属性を付与すること

* Group の辞書には必ず displayName バックエンド属性を付与すること

azure バックエンド特有のバックエンド属性
---------------------------------------------
azure バックエンドで利用可能なバックエンド属性は以下の URL
を参考にしてください。

https://msdn.microsoft.com/Library/Azure/Ad/Graph/api/entity-and-complex-type-reference#userentity

ここでは、上の URL に記載のない、 azure バックエンド特有の
バックエンド属性の説明をします。

assignedLicenses
    *assignedLicenses* バックエンド属性は、ユーザーに対して、
    Office365 等の利用に必要なライセンスを付与、あるいは、
    すでに割り当てられているライセンスを削除するためのものです。
    このバックエンド属性に指定可能なものは skuPartNumber と呼ばれる属性値です。
    たとえば、 **STANDARDPACK** のような、値を指定します。
    ライセンスは複数付与することができますので、
    :doc:`../unicornidm-conf` の *assignedLicenses* に対応するフロントエンド属性を
    *multi_valued_attributes* に含めるようにしてください
    (デフォルトの設定ファイルでは *azureLicense* として含められています) 。

    ここで、 azure バックエンドのライセンスについて説明します。
    Azure AD では、ひとつのライセンスに複数のプランが紐付いています。
    たとえば、以下のように **STANDARDPACK** には 3 つのプランが紐付き、
    **OFFICESUBSCRIPTION_FACULTY** には 2 つのプランが紐付いています
    (以下の図は実際のライセンス体系と異なります) 。

    ::

        ライセンス                   プラン

        STANDARDPACK
            |
            +----------------------- EXCHANGE_S_STANDARD
            |
            +----------------------- YAMMER_ENTERPRISE
            |
            +----------------------- MCOSTANDARD

        OFFICESUBSCRIPTION_FACULTY
            |
            +----------------------- OFFICESUBSCRIPTION
            |
            +----------------------- ONEDRIVESTANDARD

    ライセンスを付与する際に、一部のプランを無効にしたい場合があります。
    その時は **STANDARDPACK/YAMMER_ENTERPRISE:MCOSTANDARD** のように、
    **<ライセンス名>/<プラン名>:<プラン名>:...** と指定します。
