20.4.3.10 ソーシャル・サインイン

ソーシャル・サインインは、OpenID ConnectまたはOAuth2標準をサポートする、Google、Facebookなどのソーシャル・ネットワークによる認証をサポートします。

20.4.3.10.1 ソーシャル・サインインについて

ソーシャル・サインイン認証は、主に次のユースケースに役立ちます。

  • アプリケーションがインターネットに直接接続されており、ソーシャル・ネットワークからの不明な数のユーザーがアプリケーションを使用することが想定されています。

  • 会社が、認証に関してこれらのアイデンティティ・プロバイダのいずれか、Oracle Identity Cloud Service、内部OpenID ConnectまたはOAuth2を標準としています。

    これらのアイデンティティ・プロバイダはユーザー資格証明の検証を実行するため、保護のために認可スキームを使用していないかぎり、プロバイダに登録したユーザーなら誰でもアプリケーションを使用できることに注意してください。

アプリケーションをアイデンティティ・プロバイダに登録する場合、事前定義されたOracle APEXコールバックURLのいずれかの完全なURIを使用する必要があります。たとえば、アプリケーションURIが次のようになっているとします。
https://www.example.com/apex/f?p=100

その後、次のいずれかを登録できます。

https://www.example.com/apex/apex_authentication.callback

または

https://www.example.com/apex/apex_authentication.callback2

ソーシャル・ネットワーク認証プロバイダでは、ユーザーに関する多くの情報が格納されます。有効範囲属性(アイテム・ヘルプを参照)を使用して、この情報を要求するようにソーシャル・ログイン認証スキームを構成できます。認証スキームの認証後プロシージャで、APEX_JSON.GET_%ファンクション・コールを使用して、この情報にアクセスできます。

アプリケーションで複数の認証スキームを使用して、複数のソーシャル・ログイン・プロバイダおよび他のスキームをサポートできます。

関連項目:

認証スキーム属性「セッションの切替え」の詳細は、「認可」を参照してください。

20.4.3.10.2 ソーシャル・サインイン認証の設定

ノート:

ソーシャル・サインイン認証を作成するための前提条件として、認証プロバイダからOAuth2資格証明を要求して、アプリケーションへのリダイレクトをサポートするようにアカウントを構成する必要があります。詳細は、認証プロバイダのドキュメントを参照してください。次のステップでは、この操作が完了していること、およびアプリケーションの共有コンポーネントにOAuth2資格証明を保存していることを前提としています。

ソーシャル・サインイン認証を設定するには:

  1. ワークスペースのホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
  2. アプリケーションを選択します。
  3. アプリケーションのホームページで、「共有コンポーネント」をクリックします。

    共有コンポーネント・ページが表示されます。

  4. 「セキュリティ」で、「認証スキーム」を選択します。
  5. 認証スキーム・ページで、「作成」をクリックします。
  6. 「ギャラリからの事前構成済スキームに基づく」を選択し、「次へ」をクリックします。
  7. 「名前」で、次の項目を指定します。
    1. 名前: 他のアプリケーション開発者が認証スキームを参照するための名前を入力します。
    2. スキーム・タイプ: 「ソーシャル・サインイン」を選択します。
  8. 「設定」で、次の項目を指定します。
    1. 資格証明ストア: 認証プロバイダのクライアントIDおよびシークレットを含む資格証明ストアを選択します。
    2. 認証プロバイダ: オプションは次のとおりです。
      • OpenID Connectプロバイダ: OpenID接続ベースの認証プロバイダを使用します。次に、プロバイダのOpenID検出URLを入力する必要があります。
      • 汎用OAuth2プロバイダ: OAuth2認証プロバイダを使用します。次に示す認可エンドポイント、トークン・エンドポイントおよびユーザー情報エンドポイントのURLを入力する必要があります。
      • Google: Googleログインの事前定義済設定を使用します。
      • Facebook: Facebookログインの事前定義済設定を使用します。
    3. 検出URL: OpenID Connectプロバイダの検出URLを入力します。

      次に例を示します。

      https://accounts.example.com/.well-known/openid-configuration

    4. 有効範囲: ログインしているユーザーに要求する権限のカンマ区切りリストを入力します。使用可能な値は、認証プロバイダによって異なります。OpenID ConnectおよびGoogleの場合、APEXでは"openid"スコープが自動的に追加されます。認証プロバイダは、これらの権限に基づいてユーザー属性を返します。APEX_JSON.GET_%ファンクションを使用して、属性をアプリケーション・アイテムにマップするか、認証後プロシージャを使用して属性を処理できます。

      OpenID Connectの有効範囲および属性(クレームとも呼ばれる)は、https://openid.net/specs/openid-connect-basic-1_0.html#Scopes%20Examples%20email,profileにリストされています

    5. 認証URIパラメータ: 認証URIのオプション・パラメータを入力します。サポートされているパラメータについては、認証プロバイダのドキュメントを参照してください。
      次に例を示します。

      prompt=consent

    6. ユーザー名: ユーザー名を含む属性、または「#」で囲まれた1つ以上の属性置換を含むフリー・テキストを入力します。認証スキームの名前は#APEX_AUTH_NAME#を使用して参照できます。たとえば、#email# (#APEX_AUTH_NAME#)の場合、電子メール・アドレス、その後に"("、認証スキーム名、")"の順で構成されたユーザー名、"jane.doe@example.com (Google)"が生成されます。

      サポートされている属性については、認証プロバイダのドキュメントを参照してください。必要な有効範囲を設定する必要があることに注意してください。そうしないと、認証プロバイダはすべての属性を送信しません。OpenID Connect有効範囲および属性(クレームとも呼ばれる)は、次の場所にリストされています。

      例:

      #sub# (#APEX_AUTH_NAME#)

    7. ユーザー名の大文字への変換: ユーザー名の属性値を大文字に変換する必要があるかどうかを構成します。
    8. 追加ユーザー属性: 追加のユーザー・データ属性のカンマ区切りリストを入力します。

      サポートされている属性については、認証プロバイダのドキュメントを参照してください。必要な有効範囲を設定する必要があることに注意してください。そうしないと、認証プロバイダはすべての属性を送信しません。OpenID Connect有効範囲および属性(クレームとも呼ばれる)は、次の場所にリストされています。

      https://openid.net/specs/openid-connect-basic-1_0.html#Scopes

    9. 追加ユーザー属性のマップ先: 追加ユーザー属性がマップされるアプリケーション・アイテム名のカンマ区切りリストを指定します。

      たとえば、次の属性を設定すると、APEXでは、対応するアイテムのセッション・ステートに属性値が自動的に保存されます。

      • 追加ユーザー属性: email,profile,picture

      • 追加ユーザー属性のマップ先: G_EMAIL,G_PROFILE,G_PICTURE

    10. 属性の検証: 有効にすると、APEXは属性"#name#_verified" (たとえば、属性"email"の場合は"email_verified")を検索します。OpenIDは、アイデンティティ・プロバイダが未検証の"email"属性および"phone_number"属性に対して"#name#_verified":falseを送信することを定義します。APEXでは、このような未検証の属性は無視されます。これにより、#name#が「ユーザー名」属性である場合、認証が失敗します。アイデンティティ・プロバイダが、アプリケーションで認証に使用される未検証のデータの入力を攻撃者に許可した場合、攻撃者はアプリケーション内で他のユーザーになりすますことができます。「属性の検証」チェックでは、これを防ぐことができます。
  9. 「認証スキームの作成」をクリックします。