41 OAuthジャストインタイム(JIT)ユーザー・プロビジョニング

この項では、OAMでのOAuthジャストインタイム・ユーザー・プロビジョニングおよび構成の概要について説明します。

ジャストインタイム・ユーザー・プロビジョニングによって、ユーザーがソーシャル・アイデンティティ・プロバイダを使用して初めてログインしようとするときに、ユーザー・アイデンティティを動的にプロビジョニングできます。ユーザー・アカウントを直接作成する場合、事前にシステムでユーザーをプロビジョニングする必要はありません。

OAMでは、ジャストインタイム・ユーザー・プロビジョニングを構成して使用するための次の方法を提供します:

41.1 自己登録を使用したジャストインタイム・ユーザー・プロビジョニング

OAMを使用すると、独自のユーザー・プロビジョニング・フローに基づいて、ユーザー・プロビジョニングをより詳細に制御できます。この項のステップに従って、ジャストインタイム・ユーザー・プロビジョニングに自己登録を使用します。

41.1.1 自己登録によるジャストインタイム・プロビジョニングの前提条件

自己登録によるジャストインタイム・ユーザー・プロビジョニングの構成に進む前に、次のステップに従ってください。

  1. OAuthUserSelfRegistrationプラグインをOAMコンソールに追加します。
    ジャストインタイム・ユーザー・プロビジョニングは、即時利用可能なOAuthUserSelfRegistrationプラグインでサポートされています。

    プラグインがコンソールで使用できない場合は、次のステップで説明するように、configurePluginMetadata WLSTコマンドを実行する必要があります:

    1. ローカル・ディレクトリにXMLプロパティ・ファイルを作成します。たとえば、propFileName.xmlです。作成したXMLファイルに次のプラグイン・メタデータ・コンテンツを追加します。必要に応じて、後でoam-consoleから値を変更できます。
      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
      <properties>
      	<entry key="implementation">oracle.security.am.plugin.authn.OAuthUserSelfRegistrationPlugin</entry>
      	<entry key="email">donotreply@oracle.com</entry>
      	<entry key="source">System</entry>
      	<entry key="status">ACTIVATED</entry>
      	<entry key="description">User self registration plugin for JIT</entry>
      	<entry key="jarFileName"></entry>
      	<entry key="version">10</entry>
      	<entry key="author">uid=orcladmin</entry>
      	<entry key="name">OAuthUserSelfRegistrationPlugin</entry>
      	<entry key="checksum"></entry>
      	<entry key="interface">oracle.security.am.plugin.authn.AbstractAuthenticationPlugIn</entry>
      	<entry key="type">Authentication</entry>
      	<entry key="initParameters.autoprovision_password_policy_regex">string~300~false</entry>
      	<entry key="initParameters.registration_url">string~300~true</entry>
      	<entry key="initParameters.secret_key">string~300~true</entry>
      	<entry key="initParameters.autoprovisioning">string~300~false</entry>
      	<entry key="initParameters.autoprovision_key_user_record_attribute_list">string~300~true</entry>
      	<entry key="initParameters.autoprovision_idtoken_to_user_attribute_mapping">string~300~true</entry>
      	<entry key="initParameters.autoprovision_useridentitystore">string~300~false</entry>
      </properties>
    2. 次のWLSTコマンドを実行します。
      configurePluginMetadata('OAuthUserSelfRegistrationPlugin','/path_to_file/propFileName.xml')

      ここで、OAuthUserSelfRegistrationPluginはプラグインの名前、/path_to_file/propFileName.xmlは、前のステップでプラグイン・メタデータXMLファイルが作成されたディレクトリです。

    3. 管理サーバーを再起動します。
  2. Identity Federationサービスを有効にします

    ジャストインタイム・ユーザー・プロビジョニングが機能するためには、Identity Federationサービスを有効にする必要があります。

    1. Oracle Access Managementコンソールにログインします
      https://OAMAdminHost:OAMAdminPort/oamconsole/
    2. 「ようこそ」ページで、「構成」「使用可能なサービス」の順にクリックします
    3. 「フェデレーション」で、「Identity Federation」の横にある「サービスの有効化」をクリックします(または緑色のステータス・チェック・マークが表示されることを確認します)。

      確認ウィンドウが表示されます。

  3. 次のWLSTコマンドを使用して、blobdiscoveryプロバイダ設定をRDBMSBlobDiscoveryProviderに設定します。
    setDiscoveryProvider('blobdiscovery','oracle.security.fed.jvt.discovery.model.profilestate.RDBMSBlobDiscoveryProvider') 

    次のWLSTコマンドを使用して、設定を確認します:

    
    displayDiscoveryProvider('blobdiscovery')
    

    これらのWLSTコマンドの詳細は、『Identity and Access ManagementのためのWebLogic Scripting Toolコマンド・リファレンス』setDiscoveryProviderおよびdisplayDiscoveryProviderに関する項を参照してください。

  4. 自己登録ページを作成し、登録URLをWebLogic Serverにデプロイします。詳細は、「自己登録ページについて」を参照してください。
  5. 任意のアイデンティティ・プロバイダでOauthクライアントを作成します。

    たとえば:

41.1.2 自己登録ページについて

この項では、自己登録ページを作成するためのガイドラインを示します。

所有する自己登録ページにユーザーをリダイレクトすることにより、独自のユーザー・プロビジョニング・フローに基づいて、ユーザー・プロビジョニングをより詳細に制御できます。

自己登録ページでは、次の操作を実行できる必要があります:

ノート:

自己登録ページを作成する前に、すべての前提条件のステップを完了していることを確認してください。詳細は、「自己登録によるジャストインタイム・プロビジョニングの前提条件」を参照してください。
  1. ユーザー情報エンドポイントを呼び出して、ユーザーの作成に必要なユーザー属性を取得します。ユーザーregistrationidは、OAMから問合せパラメータとして受信します。

    たとえば:

    curl -X GET 'http://<ManagedOAMHost>:<ManagedOAMPort>/oamfed/user/regdata?registrationid=<registrationId>
    レスポンスは次の例のようになります:
    {
    idtoken : "{\"iss\":\"https://accounts.google.com\",\"azp\":\"288915398401-etd60uissja597aed1veoc0hlhist1jg.apps.googleusercontent.com\",\"aud\":\"288915398401-etd60uissja597aed1veoc0hlhist1jg.apps.googleusercontent.com\",\"sub\":\"104056721435364290436\",\"email\":\"johndoe@gmail.com\",\"email_verified\":true,\"at_hash\":\"KVrh2eKbxnhN3fy0jESgNQ\",\"iat\":1570075783,\"exp\":1570079383},
    hmac : "<value>"
    }
  2. HMAC検証。OAuthUserSelfRegistrationPluginで構成されたsecret_keyを使用して、受信したユーザー・データのHMAC (パラメータ‘idtoken’の内容)を計算し、計算されたHMACのbase64urlエンコーディングを実行できます。この値は、ステップ1で受信したHMAC値のbase64urlエンコーディングと一致している必要があり、メッセージの整合性を確認します。HMAC値が一致しない場合、リクエストを失敗させることができます。
  3. 構成済のOAMユーザー・ストアにユーザー・アカウントを作成します。

    このステップでは、独自のロジックを使用して、構成済のユーザー・ストアにユーザー・アカウントを作成します。

  4. ユーザーregistrationidを使用して、次のURLでOAMにリダイレクトします。
    http(s)://<ManagedOAMHost>:<ManagedOAMPort>/oam/server/auth_cred_submit
OAMサーバーに自己登録ページをデプロイする方法の詳細は、JSP/HTMLデプロイメントに関する項を参照してください

ノート:

自己登録ページは、外部サーバーに配置できます。

例41-1 自己登録ページのサンプル

自己登録ページは、用意されている次のサンプルの登録に似ている必要があります:


<!DOCTYPE html>
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page import="java.util.*, java.net.*, java.io.*"%>
<%@ page import="org.codehaus.jettison.json.JSONObject"%>
<%@ page import="javax.crypto.*, javax.crypto.spec.*"%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <title>Register</title>
    </head>
    <body>
        <h1>Creating User with following Atrributes</h1>
        <%! JSONObject jsonBody=null; %>
        <%! String userdata="text"; %>
        <%! String managedHostName = System.getProperty("managed.host.name"); %>
        <%! String managedPort = System.getProperty("managed.port"); %>
        <%! String managedprotocol = System.getProperty("managed.protocol"); %>
    <%
    String statusCode ="RegistrationFailed";
    try{

    //Step 1 : Get the userinfo from OAM, using the following endpoint

    //Verify and sanitise query parm to avoid XSS attack
    String regRefId = XSSFilter.sanitizeInput("registrationid",request.getParameter("registrationid"));
    String regDataURLPath = "/oamfed/user/regdata?registrationid=" + regRefId;
    URL regDataURL =    new URL(managedprotocol + "://"+ managedHostName +":" + managedPort + regDataURLPath);
    HttpURLConnection connection = (HttpURLConnection)regDataURL.openConnection();
    String data=null;
    String hhmac=null;
    if (connection.getResponseCode() == 200) {
     statusCode ="RegistrationSuccess";
      ByteArrayOutputStream bos = new ByteArrayOutputStream();
      BufferedInputStream bis = new BufferedInputStream(connection.getInputStream());
      byte[] b = new byte[256];
      int i;
      while ((i = bis.read(b)) != -1)
        bos.write(b, 0, i);
      byte[] body = bos.toByteArray();
    userdata=new String(body);
       jsonBody = new JSONObject(new String(body));
      //Save the userinfo as returned from OAM in parameter idtoken
      data = jsonBody.getString("idtoken");
      //Save the hmac of the data , to be used later.
      hhmac = jsonBody.getString("hmac");
      out.println(jsonBody.toString());
      }else{
         out.println("got error");
         out.println(connection.getResponseMessage());
      }

      //End of Step 1

      //Step 2 : (Optional) if you choose to compare the hmac of received data for security purposes
      //Calculate the hmac of the data received in idtoken using your secret_key, as configured in OAuthUserSelfRegistrationPlugin.

      String key= "any_data"; //secret_key value
      String algo ="HmacSHA256";
      SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), algo);
        Mac mac;
        byte[] calculatedHmac = null;
        try {
            mac = Mac.getInstance(algo);
            mac.init(signingKey);
            calculatedHmac = mac.doFinal(data.getBytes());
        } catch (Exception e) {
        //handle error
           }
        String base64ofcalculatedHmac = java.util.Base64.getUrlEncoder().encodeToString(calculatedHmac);
        if(hhmac.equals(base64ofcalculatedHmac)){
        out.println("/n hmac matches");
        }else{
           out.println("/n hmac verification Failed");
        }
     } catch (Throwable t)
  {
     out.println(t.getMessage());
  }

   //End of Step 2

  //Step 3: Add your proprietary logic for user account creation in your configured UserStore, using the userinfo as retrieved in Step 1
  /**
   * Add User Account creation Logic here
   *
  **/
  //End of Step 3

 %>
        //Step 4: In this example the redirect is triggered by button click action

        <button id="myButton" class="float-left submit-button">Create User</button>
        <script type="text/javascript">
          var url_string = window.location.href;
          var managedprotocol1 = "<%= managedprotocol %>";
          var managedHostName1 = "<%= managedHostName %>";
          var managedPort1 = "<%= managedPort %>";
          var redirect = managedprotocol1 + "://" + managedHostName1 + ":" + managedPort1 + "/oam/server/auth_cred_submit";
              document.getElementById("myButton").onclick = function () {
        location.href = redirect;
        
        //End of Step 4
    };
</script>
    </body>
</html>

41.1.3 UserSelfRegistration認証モジュールおよびスキームの構成

41.1.3.1 ジャストインタイムUserSelfRegistration認証モジュール

新しい認証モジュールを作成し、OpenIDConnectPlugin、UserIdentificationPlugin、OAuthUserSelfRegistrationPluginおよびUserIdentificationPluginの4つのステップを構成します。

Oracle Access ManagementコンソールでUserSelfRegistration認証モジュールを構成するには:
  1. システム管理者としてOracle Access Managementコンソールにログインします。
  2. 「アプリケーション・セキュリティ」起動パッドで、「プラグイン」の下にある「認証モジュール」をクリックします。
  3. 「認証モジュール」タブで、「認証モジュールの作成」「カスタム認証モジュール」の順にクリックします。
  4. 「一般」タブで、認証モジュールの名前および説明を追加します。たとえば、UserSelfRegistrationです。
  5. 次のように、UserSelfRegistration認証モジュールのステップを追加します:
    1. アイデンティティ・プロバイダに基づいて、OpenIDConnectPluginおよびUserIdentificationPluginステップを追加します。詳細は、「認証モジュールおよびスキームとポリシーの変更」を参照してください
    2. OAuthUserSelfRegistrationPluginステップを追加し、次のパラメータを設定します:

      表41-1 OAuthUserSelfRegistrationPluginステップ

      ステップの詳細 説明
      registration_url

      必須。顧客所有の自己登録ページの絶対URL。

      secret_key 必須。この秘密キーは、userInformation RestAPIに送信されるリクエスト・ペイロードのhmacを作成するために使用されます(カスタム自己登録ページはHMAC検証と同じキー値を使用する必要があります)。

      暗号化キー使用する場合は、接頭辞{AES}を暗号化キーの値に追加します。

  6. 「認証モジュールおよびスキームとポリシーの変更」の説明に従って、UserIdentificationPluginステップを追加し、パラメータを設定します。
41.1.3.2 JIT UserSelfRegistrationステップ編成

認可フローの編成ステップを構成します。

  1. 「ステップ・オーケストレーション」サブタブをクリックします
  2. InitialStepリストから、OpenIDConnectPluginステップを選択します。
  3. 次の例に示すように、各ステップに対して、「成功時」「失敗時」および「エラー発生時」を設定します:

表41-2 JITステップ編成

名前 説明 成功時 失敗時 エラー発生時
OpenID_Connect OpenIDConnectPluginステップ User_Identification1 失敗 失敗
User_Identification1 最初のUserIdentificationPluginステップ 成功 OAuth_Self_Registration 失敗
OAuth_Self_Registration OauthUserSelfRegistrationPluginステップ User_Identification2 失敗 失敗
User_Identification2 2番目のUserIdentificationPluginステップ 成功 失敗 失敗
41.1.3.3 ジャストインタイムUserSelfRegistration認証スキーム

認証スキームで、チャレンジ・パラメータinitial_command=NONEを設定します。

新しい認証スキームを作成するには:
  1. 「アプリケーション・セキュリティ」起動パッドで、「Access Manager」の下にある「認証スキーム」をクリックします。
  2. 「認証スキーム」タブで、「認証スキームの作成」をクリックします。
  3. 認証スキームで、パラメータを設定します。たとえば、次の図は、認証スキーム・ページのサンプルを示しています:

    図41-1 認証スキーム・ページのサンプル

    認証スキーム・ページのサンプル

    パラメータの詳細は、「認証スキームおよびページ」を参照してください

  4. 「チャレンジ・パラメータ」で、initial_command=NONEを追加します。

41.1.4 UserSelfRegistrationSchemeによるリソースの保護

UserSelfRegistrationScheme認証スキームを保護されたリソース・ポリシーに割り当てることで、自己登録によるジャストインタイム・ユーザー・プロビジョニングの構成を完了します。

  1. 「アプリケーション・セキュリティ」起動パッドで、「Access Manager」の下にある「アプリケーション・ドメイン」を選択します。
  2. 必要なアプリケーション・ドメインを検索して開きます。
  3. 「認証ポリシー」タブを開き、保護されたリソース・ポリシーをクリックします。
  4. 「認証スキーム」ドロップダウン・リストから「UserSelfRegistrationScheme」を選択し、「適用」をクリックします。

41.2 パスワード・プロンプトを使用したジャストインタイム・ユーザー自動プロビジョニングの構成

この項のステップに従って、パスワード・プロンプトを使用したジャストインタイム・ユーザー自動プロビジョニングを構成します。

41.2.1 ジャストインタイム・ユーザー自動プロビジョニングの前提条件

自動プロビジョニングの構成に進む前に、次のステップに従ってください。

  1. OAuthUserSelfRegistrationプラグインをOAMコンソールに追加します。
    ジャストインタイム・ユーザー・プロビジョニングは、即時利用可能なOAuthUserSelfRegistrationプラグインでサポートされています。

    プラグインがコンソールで使用できない場合は、次のステップで説明するように、configurePluginMetadata WLSTコマンドを実行する必要があります:

    1. ローカル・ディレクトリにpropFileName.xmlという名前のXMLプロパティ・ファイルを作成します。作成したXMLファイルに次のコンテンツを追加します。必要に応じて、後でoam-consoleから値を変更できます
      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
      <properties>
      	<entry key="implementation">oracle.security.am.plugin.authn.OAuthUserSelfRegistrationPlugin</entry>
      	<entry key="email">donotreply@oracle.com</entry>
      	<entry key="source">System</entry>
      	<entry key="status">ACTIVATED</entry>
      	<entry key="description">User self registration plugin for JIT</entry>
      	<entry key="jarFileName"></entry>
      	<entry key="version">10</entry>
      	<entry key="author">uid=orcladmin</entry>
      	<entry key="name">OAuthUserSelfRegistrationPlugin</entry>
      	<entry key="checksum"></entry>
      	<entry key="interface">oracle.security.am.plugin.authn.AbstractAuthenticationPlugIn</entry>
      	<entry key="type">Authentication</entry>
      	<entry key="initParameters.autoprovision_password_policy_regex">string~300~false</entry>
      	<entry key="initParameters.registration_url">string~300~true</entry>
      	<entry key="initParameters.secret_key">string~300~true</entry>
      	<entry key="initParameters.autoprovisioning">string~300~false</entry>
      	<entry key="initParameters.autoprovision_key_user_record_attribute_list">string~300~true</entry>
      	<entry key="initParameters.autoprovision_idtoken_to_user_attribute_mapping">string~300~true</entry>
      	<entry key="initParameters.autoprovision_useridentitystore">string~300~false</entry>
      </properties>
    2. 次のWLSTコマンドを実行します
      configurePluginMetadata('OAuthUserSelfRegistrationPlugin','/path_to_file/propFileName.xml')

      ここで、OAuthUserSelfRegistrationPluginはプラグインの名前、/path_to_file/propFileName.xmlは、前のステップでプラグイン・メタデータXMLファイルが作成されたディレクトリです。

    3. 管理サーバーを再起動します。
  2. 任意のアイデンティティ・プロバイダでOAuthクライアントを作成します。

    たとえば:

41.2.2 AutoProvisioning認証モジュールおよびスキームの構成

41.2.2.1 ジャストインタイム・ユーザー自動プロビジョニング認証モジュール

新しい認証モジュールを作成し、OpenIDConnectPlugin、UserIdentificationPlugin、OAuthUserSelfRegistrationPlugin、CredentialCollectorPluginおよびUserIdentificationPluginの5つのステップを構成します。

Oracle Access Managementコンソールでジャストインタイム・ユーザー自動プロビジョニング認証モジュールを構成するには:
  1. システム管理者としてOracle Access Managementコンソールにログインします。
  2. 「アプリケーション・セキュリティ」起動パッドで、「プラグイン」の下にある「認証モジュール」をクリックします。
  3. 「認証モジュール」タブで、「認証モジュールの作成」「カスタム認証モジュール」の順にクリックします。
  4. 「一般」タブで、認証モジュールの名前および説明を追加します。たとえば、AutoProvisioning_WithPasswdです。
  5. 次のように、AutoProvisioning認証モジュールのステップを追加します:
    1. GoogleやFacebookなどのアイデンティティ・プロバイダのOpenIDConnectPLuginおよびUserIdentificationPluginステップを追加します。詳細は、「OpenIDConnectPluginについて」および「認証モジュールおよびスキームとポリシーの変更」を参照してください。

      ノート:

      OpenIDConnect Pluginで構成されたusername_attrは、ユーザーに関する情報を取得するためにアイデンティティ・トークンから読み取る属性を示します。このパラメータは、新しいユーザー・アカウントを作成するときにUserNameとして使用されます
    2. OAuthUserSelfRegistrationPluginステップを追加し、次のパラメータを設定します:

      表41-3 自動プロビジョニングのOAuthUserSelfRegistrationPluginステップ

      説明
      autoprovisioning

      自動プロビジョニングを有効にするには、これをTrueに設定します(大/小文字は区別されません)。

      値が指定されていない場合、またはFalseに設定されている場合、自動プロビジョニングは有効にならず、自己登録によるユーザー・プロビジョニングが有効になります。

      autoprovision_key_user_record_attribute_list

      必須

      ユーザー・レコードの作成に使用する必要のあるアイデンティティ・トークンから属性のカンマ区切りリストを指定します。

      ここにリストされている属性のみが、プロビジョニングされたユーザー・レコードに設定されます。

      autoprovision_idtoken_to_user_attribute_mapping

      オプション。

      idtokenからフェッチされた属性名は、アイデンティティ・ストアで指定された属性名と一致している必要があります。

      属性名に一貫性がない場合は、key:valueマッピングのカンマ区切りリストを指定します。ここで、keyはIdtokenで使用される属性名で、valueはアイデンティティ・ストアで使用される属性名です。

      たとえば、email:mail, firstName:first-nameです

      autoprovision_useridentitystore

      オプション。

      アイデンティティ・ストア名を指定します。指定しない場合、デフォルト値が使用されます。

      autoprovision_password_policy_regex

      オプション。

      パスワード文字列が従う必要のある有効な正規表現を指定します。

    3. CredentialCollectorPluginステップを追加し、次のパラメータを設定します:

      表41-4 自動プロビジョニングのCredentialCollectorPluginステップ

      actiontype REDIRECT
      CRED_PARAM_3 {ID=CONFIRM_PASSWORD},{DISPLAY_NAME=CONFIRM_PASSWORD},{TYPE=password}
      CRED_PARAM_2 {ID=PASSWORD},{DISPLAY_NAME=PASSWORD},{TYPE=password}
      CRED_PARAM_1 {ID=USERNAME},{DISPLAY_NAME=USERNAME },{TYPE=text_readonly},{VALUE=constant}
      loginPageURL /CustomReadServlet
      NO_OF_CREDENTIALS 3

      このステップの残りのすべてのパラメータの詳細は、表22-12を参照してください

    4. 「認証モジュールおよびスキームとポリシーの変更」の説明に従って、UserIdentificationPluginステップを追加し、パラメータを設定します。
41.2.2.2 JITユーザー自動プロビジョニング・ステップ編成

認可フローの編成ステップを構成します。

  1. 「ステップ・オーケストレーション」サブタブをクリックします
  2. InitialStepリストから、OpenIDConnectPluginステップを選択します。
  3. 次の例に示すように、各ステップに対して、「成功時」「失敗時」および「エラー発生時」を設定します:

表41-5 JITステップ編成

名前 説明 成功時 失敗時 エラー発生時
OpenID_Connect OpenIDConnectPluginステップ User_Identification1 失敗 失敗
User_Identification1 最初のUserIdentificationPluginステップ 成功 Credential_Collector 失敗
Credential_Collector CredentialCollectorPluginステップ OAuth_Self_Registration 失敗 失敗
OAuth_Self_Registration OauthUserSelfRegistrationPluginステップ User_Identification2 失敗 失敗
User_Identification2 2番目のUserIdentificationPluginステップ 成功 失敗 失敗
41.2.2.3 ジャストインタイム・ユーザーAutoProvisioningScheme

カスタムHTMLページを作成し、認証スキームでコンテキスト・タイプとコンテキスト値を設定します。

新しい認証スキームを作成するには:
  1. 「アプリケーション・セキュリティ」起動パッドで、「Access Manager」の下にある「認証スキーム」をクリックします。
  2. 「認証スキーム」タブで、「認証スキームの作成」をクリックします。
  3. 「チャレンジURL」/CustomReadServletに設定します
  4. 「コンテキスト・タイプ」オプションをデフォルトからcustomHTMLに変更します。
  5. 「コンテキスト値」で、customHTMLページへの絶対パスを指定します。

    次のサンプルのようなコードでカスタムHTMLファイルを作成する必要があります:

    
    <h4> Creating User Account with following details </h4>
    <form id="loginData" action="/oam/server/auth_cred_submit" method="post" name="loginData">
    	<div id="oam_credentials" class="input-row">
    		<span class="ctrl"></span>
    	</div>
    	<div class="button-row">
    		<span class="ctrl">
    			<input id="login_button" type="submit" value="Login" class="formButton"
    				onclick="this.disabled=true;document.body.style.cursor = 'wait';
    				this.className='formButton-disabled';form.submit();return false;"/>
    		</span>
    	</div>
    	<div id="ignore_oam_error_codes"></div>
    </form>
    
    グローバリゼーション用に、カスタムhtmlファイルと同じディレクトリにプロパティ・ファイルを作成します。ファイル名は、.properties拡張子が付いたカスタムhtmlファイルと同じにする必要があります。
    
    USERNAME=Username
    PASSWORD=Password
    CONFIRM_PASSWORD=Confirm password
  6. 「チャレンジ・パラメータ」で、initial_command=NONEを追加します

    ノート:

    失敗した認証に対するデフォルトの再試行回数は、5です。これは、チャレンジ・パラメータのOverrideRetryLimitを使用して変更できます。たとえば、OverrideRetryLimit=1です。
  7. このスキームの残りのすべてのパラメータを設定します。たとえば、次の図は、認証スキーム・ページのサンプルを示しています:

    図41-2 認証スキーム・ページのサンプル

    認証スキーム・ページのサンプル

    パラメータの詳細は、「認証スキームおよびページ」を参照してください

41.2.3 AutoProvisioningSchemeによるリソースの保護

AutoProvisioningSchemeを保護されたリソース・ポリシーに割り当てることで、ジャストインタイム自動プロビジョニングの構成を完了します。

  1. 「アプリケーション・セキュリティ」起動パッドで、「Access Manager」の下にある「アプリケーション・ドメイン」を選択します。
  2. 必要なアプリケーション・ドメインを検索して開きます。
  3. 「認証ポリシー」タブを開き、保護されたリソース・ポリシーをクリックします。
  4. 「認証スキーム」ドロップダウン・リストから「AutoProvisioningScheme」を選択し、「適用」をクリックします。

41.3 ジャストインタイム・ユーザー自動プロビジョニングの構成(パスワード・プロンプトを使用しない)

この項のステップに従って、パスワード・プロンプトを使用しないジャストインタイム・ユーザー自動プロビジョニングを構成します。

41.3.1 JITユーザー自動プロビジョニングの前提条件(パスワード・プロンプトを使用しない)

自動プロビジョニングの構成(パスワード・プロンプトを使用しない)に進む前に、次のステップに従ってください

  1. OAuthUserSelfRegistrationプラグインをOAMコンソールに追加します。
    ジャストインタイム・ユーザー・プロビジョニングは、即時利用可能なOAuthUserSelfRegistrationプラグインでサポートされています。

    プラグインがコンソールで使用できない場合は、次のステップで説明するように、configurePluginMetadata WLSTコマンドを実行する必要があります:

    1. ローカル・ディレクトリにpropFileName.xmlという名前のXMLプロパティ・ファイルを作成します。作成したXMLファイルに次のコンテンツを追加します。必要に応じて、後でoam-consoleから値を変更できます
      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
      <properties>
      	<entry key="implementation">oracle.security.am.plugin.authn.OAuthUserSelfRegistrationPlugin</entry>
      	<entry key="email">donotreply@oracle.com</entry>
      	<entry key="source">System</entry>
      	<entry key="status">ACTIVATED</entry>
      	<entry key="description">User self registration plugin for JIT</entry>
      	<entry key="jarFileName"></entry>
      	<entry key="version">10</entry>
      	<entry key="author">uid=orcladmin</entry>
      	<entry key="name">OAuthUserSelfRegistrationPlugin</entry>
      	<entry key="checksum"></entry>
      	<entry key="interface">oracle.security.am.plugin.authn.AbstractAuthenticationPlugIn</entry>
      	<entry key="type">Authentication</entry>
      	<entry key="initParameters.autoprovision_password_policy_regex">string~300~false</entry>
      	<entry key="initParameters.registration_url">string~300~true</entry>
      	<entry key="initParameters.secret_key">string~300~true</entry>
      	<entry key="initParameters.autoprovisioning">string~300~false</entry>
      	<entry key="initParameters.autoprovision_key_user_record_attribute_list">string~300~true</entry>
      	<entry key="initParameters.autoprovision_idtoken_to_user_attribute_mapping">string~300~true</entry>
      	<entry key="initParameters.autoprovision_useridentitystore">string~300~false</entry>
      </properties>
    2. 次のWLSTコマンドを実行します
      configurePluginMetadata('OAuthUserSelfRegistrationPlugin','/path_to_file/propFileName.xml')

      ここで、OAuthUserSelfRegistrationPluginはプラグインの名前、/path_to_file/propFileName.xmlは、前のステップでプラグイン・メタデータXMLファイルが作成されたディレクトリです。

    3. 管理サーバーを再起動します。
  2. 任意のアイデンティティ・プロバイダでOAuthクライアントを作成します。

    たとえば:

41.3.2 JIT AutoProvisioning認証モジュールおよびスキームの構成(パスワード・プロンプトを使用しない)

41.3.2.1 ジャストインタイム・ユーザー自動プロビジョニング認証モジュール(パスワード・プロンプトを使用しない)

新しい認証モジュールを作成し、OpenIDConnectPlugin、UserIdentificationPlugin、OAuthUserSelfRegistrationPluginおよびUserIdentificationPluginの4つのステップを構成します。

Oracle Access Managementコンソールでジャストインタイム・ユーザー自動プロビジョニング認証モジュールを構成するには:
  1. システム管理者としてOracle Access Managementコンソールにログインします。
  2. 「アプリケーション・セキュリティ」起動パッドで、「プラグイン」の下にある「認証モジュール」をクリックします。
  3. 「認証モジュール」タブで、「認証モジュールの作成」「カスタム認証モジュール」の順にクリックします。
  4. 「一般」タブで、認証モジュールの名前および説明を追加します。たとえば、AutoProvisioning_NoPasswdです。
  5. 次のように、AutoProvisioning認証モジュールのステップを追加します:
    1. GoogleやFacebookなどのアイデンティティ・プロバイダのOpenIDConnectPLuginおよびUserIdentificationPluginステップを追加します。詳細は、「OpenIDConnectPluginについて」および「認証モジュールおよびスキームとポリシーの変更」を参照してください。

      ノート:

      OpenIDConnect Pluginで構成されたusername_attrは、ユーザーに関する情報を取得するためにアイデンティティ・トークンから読み取る属性を示します。このパラメータは、新しいユーザー・アカウントを作成するときにUserNameとして使用されます
    2. OAuthUserSelfRegistrationPluginステップを追加し、次のパラメータを設定します:

      表41-6 自動プロビジョニングのOAuthUserSelfRegistrationPluginステップ

      説明
      autoprovisioning

      自動プロビジョニングを有効にするには、これをTrueに設定します(大/小文字は区別されません)。

      値が指定されていない場合、またはFalseに設定されている場合、自動プロビジョニングは有効にならず、自己登録によるユーザー・プロビジョニングが有効になります。

      autoprovision_key_user_record_attribute_list

      必須

      ユーザー・レコードの作成に使用する必要のあるアイデンティティ・トークンから属性のカンマ区切りリストを指定します。

      ここにリストされている属性のみが、プロビジョニングされたユーザー・レコードに設定されます。

      autoprovision_idtoken_to_user_attribute_mapping

      オプション。

      idtokenからフェッチされた属性名は、アイデンティティ・ストアで指定された属性名と一致している必要があります。

      属性名に一貫性がない場合は、key:valueマッピングのカンマ区切りリストを指定します。ここで、keyはIdtokenで使用される属性名で、valueはアイデンティティ・ストアで使用される属性名です。

      たとえば、email:mail, firstName:first-nameです

      autoprovision_useridentitystore

      オプション。

      アイデンティティ・ストア名を指定します。指定しない場合、デフォルト値が使用されます。

      autoprovision_password_policy_regex

      JITユーザー自動プロビジョニング(パスワード・プロンプトを使用しない)フローには適用できません。このパラメータは無視されます。

    3. 「認証モジュールおよびスキームとポリシーの変更」の説明に従って、UserIdentificationPluginステップを追加し、パラメータを設定します。
41.3.2.2 JITユーザー自動プロビジョニング・ステップ編成(パスワード・プロンプトを使用しない)

認可フローの編成ステップを構成します。

  1. 「ステップ・オーケストレーション」サブタブをクリックします
  2. InitialStepリストから、OpenIDConnectPluginステップを選択します。
  3. 次の例に示すように、各ステップに対して、「成功時」「失敗時」および「エラー発生時」を設定します:

表41-7 JITステップ編成

名前 説明 成功時 失敗時 エラー発生時
OpenID_Connect OpenIDConnectPluginステップ User_Identification1 失敗 失敗
User_Identification1 最初のUserIdentificationPluginステップ 成功 OAuth_Self_Registration 失敗
OAuth_Self_Registration OauthUserSelfRegistrationPluginステップ User_Identification2 失敗 失敗
User_Identification2 2番目のUserIdentificationPluginステップ 成功 失敗 失敗
41.3.2.3 ジャストインタイム・ユーザーAutoProvisioningScheme (パスワード・プロンプトを使用しない)

認証スキームで、チャレンジ・パラメータinitial_command=NONEを設定します。

新しい認証スキームを作成するには:
  1. 「アプリケーション・セキュリティ」起動パッドで、「Access Manager」の下にある「認証スキーム」をクリックします。
  2. 「認証スキーム」タブで、「認証スキームの作成」をクリックします。
  3. 認証スキームで、パラメータを設定します。たとえば、次の図は、認証スキーム・ページのサンプルを示しています:

    図41-3 認証スキーム・ページのサンプル

    認証スキーム・ページのサンプル

    パラメータの詳細は、「認証スキームおよびページ」を参照してください

  4. 「チャレンジ・パラメータ」で、initial_command=NONEを追加します。

41.3.3 AutoProvisioningSchemeによるリソースの保護(パスワード・プロンプトを使用しない)

AutoProvisioningSchemeを保護されたリソース・ポリシーに割り当てることで、ジャストインタイム自動プロビジョニング(パスワード・プロンプトを使用しない)の構成を完了します。

  1. 「アプリケーション・セキュリティ」起動パッドで、「Access Manager」の下にある「アプリケーション・ドメイン」を選択します。
  2. 必要なアプリケーション・ドメインを検索して開きます。
  3. 「認証ポリシー」タブを開き、保護されたリソース・ポリシーをクリックします。
  4. 「認証スキーム」ドロップダウン・リストから「AutoProvisioningScheme」を選択し、「適用」をクリックします。