SQL バックエンド
==============================

概要
-----

::

    unicornidm.conf, templates/<backendname>.py

説明
------

バックエンドセクションのうち、 *type* が *sql* となっているバックエンドは、
RDBMS への接続に関する設定を行います。

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

リファレンス
------------

unicornidm.conf のパラメーター
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. envvar:: type

    バックエンドのタイプを指定します。 `sql` に設定してください。

.. envvar:: description

    バックエンドの説明文を指定します。

    .. versionadded:: 3.18.7

.. envvar:: engine

    RDBMS 接続に使用するエンジンを指定します。 *postgresql* か *mysql* を選択できます。

.. envvar:: bind_user

    RDBMS へ接続する際に使用するユーザーを指定します。

.. envvar:: bind_password_file

    RDBMS へ接続するユーザーのパスワード情報を格納したファイルパスを指定します。

.. envvar:: host

    RDBMS の接続先ホスト名を指定します。

.. envvar:: port

    RDBMS の接続先ポートを指定します。

.. envvar:: database

    RDBMS で使用するデータベースを指定します。

.. envvar:: table_users

    ユーザーを格納するテーブル名を指定します。

.. envvar:: table_groups

    グループを格納するテーブル名を指定します。

.. envvar:: table_members

    ユーザーとグループのメンバーシップに関する情報を格納するテーブル名を指定します。
    このテーブルには *backend_primary_key_user* と *backend_primary_key_group* で
    指定するカラム名を持つ必要があります。

.. envvar:: backend_primary_key_user

    ユーザーを一意に特定するためのカラム名を指定します。

.. envvar:: backend_primary_key_group

    グループを一意に特定するためのカラム名を指定します。

.. envvar:: password_key

    ユーザーのパスワードを格納するカラム名を指定します。

.. envvar:: enable_multivalue

    一つのカラムに複数値を格納するかどうかを指定します。デフォルト値は
    off (複数値を格納しない、複数値データが入力されても最初の値のみを格納)
    になります。

.. envvar:: multivalue_separator

    *enable_multivalue* を on にした際に、どのような区切り文字を使用するかを
    指定します。

.. envvar:: password_hash

    パスワードのハッシュアルゴリズムを指定します。詳細は *unicornidm.template.ldap(5)*
    をご覧ください。

.. envvar:: password_hash_iteration

    パスワードハッシュアルゴリズムを PBKDF2 シリーズのどれかに指定した時に
    有効なパラメーターです。このパラメーターにより、ハッシュ回数を指定できます。
    デフォルト値は 10000 です。

テンプレートファイル
^^^^^^^^^^^^^^^^^^^^

以下は、 `sql` バックエンドのテンプレートファイルの例です。

::

    User = {
        "user_name": userName,
        "sn": familyName,
        "given_name": givenName,
        "group_number": default(gidNumber, 100),
        "password": password,
        "mail": mail,
        "description": default(description),
    }


    Group = {
        "group_name": groupName,
        "description": default(description),
    }
