OAuth 認証方式の設定

OAuth 認証方式では、ユーザが OAuth プロバイダによって認証情報をサブミットできます。OAuth プロバイダはユーザを認証し、ユーザに関するクレームを含む認証レスポンスを送信します。ポリシー サーバは認証レスポンスを確認し、認証プロセスを完了して、リソースへのアクセスを認可します。
sm1252sp1jjp
OAuth 認証方式では、ユーザが OAuth プロバイダによって認証情報をサブミットできます。OAuth プロバイダはユーザを認証し、ユーザに関するクレームを含む認証レスポンスを送信します。ポリシー サーバは認証レスポンスを確認し、認証プロセスを完了して、リソースへのアクセスを認可します。
OAuth 方式を設定するプロセスには、ポリシー サーバとエージェントでの設定タスクが含まれます。
  • OAuth 認証プロセスがどのように動作するかを識別する。
  • 必要なエージェント側コンポーネントを設定する。
  • 必要なポリシー サーバ側コンポーネントを設定する。
以下の図は、OAuth 認証方式を設定するために必要なタスクを示しています。
Configure OAuth authentication
OAuth 認証プロセスの確認
以下のプロセスでは、OAuth 認証方式の動作の仕組みについて説明します。
  1. ユーザはリソースをリクエストします。
  2. エージェントはリクエストをインターセプトし、リソースが保護されているかどうかを確認するためにポリシー サーバにアクセスします。
  3. ポリシー サーバは、リソースが OAuth 認証方式で保護されていることを確認します。ポリシー サーバは、エージェントがユーザを OAuth フォーム認証情報コレクタ(FCC)にリダイレクトするようリクエストします。
  4. エージェントはユーザを FCC にリダイレクトします。
  5. ユーザは OAuth プロバイダを選択し、プロバイダ サイトで認証情報をサブミットします。
  6. FCC は OpenID ユーザ ID を作成して、それをポリシー サーバに渡します。
  7. ポリシー サーバは認証リクエストを構築して、OAuth プロバイダにユーザをリダイレクトします。
  8. ユーザはプロバイダ固有の認証情報を使用して、OAuth プロバイダでの認証を行います。
  9. プロバイダは、正常な認証のレスポンスを FCC にリダイレクトします。
  10. エージェントは、認証のレスポンスをポリシー サーバに渡します。
  11. ポリシー サーバはプロバイダ認証レスポンスを確認し、それを使用して最初の必要なクレームの値を判定します。ポリシー サーバは、クレーム値に一致する属性を持ったユーザを見つけるためにポリシー ドメインのユーザ ディレクトリをすべて検索します。一致すると、ポリシー サーバはユーザを認証します。
    注:
    この認証方式は、認証の匿名モードをサポートします。匿名モードでは、ポリシー サーバは、ユーザにマップするためにクレーム値を使用
    しません
    。ポリシー サーバは、認証方式で定義した匿名ユーザに一致するユーザを見つけるためにポリシー ドメインでユーザ ディレクトリをすべて検索します。
  12. ポリシー サーバは、FCC に認証されたユーザのセッション詳細を返します。
  13. FCC はセッション Cookie を作成して、それを Web ブラウザに渡します。ユーザはリクエストされたリソースにリダイレクトされます。また、ポリシー サーバは認可決定をすべて維持します。
OAuth プロバイダへのアプリケーションの登録
エージェント所有者は、登録タスクを完了します。
前提条件
SecureURLs パラメータが Web エージェントの設定およびその値(設定されている場合)に設定されるかどうかを判断します。
登録処理の一部として、リダイレクト URL 設定(Google)またはサイト URL 設定(Facebook)でエントリを指定します。このエントリの形式は、SecureURLs エージェント パラメータの値によって異なります。管理 UI から SecureURLs パラメータの値を確認します。このパラメータは、ホスト エージェント用のエージェント設定オブジェクトにあります。
  • SecureURLs パラメータが[はい]に設定されている場合は、以下の形式で URL を入力します。
    http(s)://agent_host
    /siteminderagent/forms/oauthcb.fcc?SMQUERYDATA=Sample
  • SecureURLs パラメータが[いいえ]に設定されている場合は、以下の形式で URL を入力します。
    http(s)://agent_host
    /siteminderagent/forms/oauthcb.fcc
Google
以下の手順に従います。
  1. Google App アカウントを作成します。
  2. https://code.google.com/apis/console に移動し、ログインします。
  3. [API Access]を選択し、OAuth クライアント ID を作成します。クライアント ID を作成するには、以下の情報を入力します。
    • ホーム ページ URL
      http(s)://homepage.com
      例: http://www.forwardinc.com
    • アプリケーション タイプ
      Web アプリケーション
    • ユーザのサイトまたはホスト名
      http://
      agent_host
      例: http://myagent.ca.com
  4. [Create clientID]をクリックします。
  5. リダイレクト URI の設定を以下の URL に編集します。
    • リダイレクト URl
      http
      (s)
      ://agent_host/siteminderagent/forms/oauthcb.fcc
      (SecureURLs が設定されていないか、または[いいえ]に設定されている場合)
      または
      http
      (s)://agent_host/siteminderagent/forms/oauthcb.fcc?SMQUERYDATA=Sample
      (SecureURLs が[はい]に設定されている場合)
  6. [更新]をクリックします。
Google 登録処理が完了します。
Facebook
以下の手順に従います。
  1. Facebook アカウントを作成します。
  2. https:// developers.facebook.com/apps に移動します。
  3. [AppName]を選択し、[Continue]をクリックします。
  4. 表示される captcha テキストを入力し、[Continue]をクリックします。
  5. Web サイトの[Facebook Login]セクションで、以下のフィールドに入力します。
    Site URL
    http
    (s)
    ://
    agent_host
    /siteminderagent/forms/oauthcb.fcc(SecureURLs が設定されていないか、または[いいえ]に設定されている場合)またはhttp
    (s)://agent_host
    /siteminderagent/forms/oauthcb.fcc?SMQUERYDATA=Sample(SecureURLs が[はい]に設定されている場合) 
  6. [Save changes]をクリックします。
  7. 以下の設定を完了します。
    • ドメインを ca.com に設定する
    • サンドボックス モードを無効にする
    • キャンバス URL を https://apps.facebook.com/
      application_name
      / に設定する
    • 保護されたキャンバス URL を https://apps.facebook.com/
      application_name
      / に設定する
登録処理によって、クライアント アプリケーション URL、クライアント ID、およびそれに関連付けられた秘密キーが生成されます。登録によって、OAuth 許可サーバ エンドポイント URLも生成されます。ここから OAuth サービスは許可コードおよびアクセス トークンを取得します。この情報の一部は、OAuth 認証方式が正常に動作するために使用するファイルを設定する際に必要です。
エージェントでの OAuth プラグインの有効化
OAuth プラグインは Web エージェント設定ファイル(WebAgent.conf)で参照されます。プラグインにより、エージェントが OAuth プロバイダと通信し、ポリシー サーバに OAuth プロバイダ認証レスポンスを転送します。
エージェント所有者に連絡し、必要なプラグインを有効にするように指示します。
以下の手順に従います。
  1. Web エージェント ホスト システムにログインします。
  2. Web エージェント設定ファイルを開きます。デフォルトのファイルの場所は Web サーバ タイプによって異なります。
    IIS:
    agent_home
    \bin\IIS
    agent_home
    はエージェントのインストール パスを指定します。
    Oracle iPlanet (iPlanet/SunOne):
    web_server_home
    /https-hostname/config
    web_server_home
    は Web サーバのインストール パスを指定します。
    Apache、IBM HTTP Server、Oracle HTTP Server
    web_server_home
    /conf
    web_server_home
    は Web サーバのインストール パスを指定します。
    Domino (Windows):
    C:\lotus\domino
    Domino (UNIX):
    $HOME/notesdata 
  3. OAuth プラグインをロードする行のコメントを外します。 
    例:
    #LoadPlugin="C:\Program Files\CA\webagent\bin\OAuthPlugin.dll"
  4. ファイルを保存します。
  5. Web サーバを再起動します。
エージェントでの OAuth フォーム認証情報コレクタの変更
サンプル OAuth FCC は Web エージェント インストールに含まれています。FCC では、ユーザが OAuth プロバイダ ユーザ名を入力することによって認証できます。
デフォルトでは、FCC は多くの OAuth プロバイダを表示します。エージェント所有者に連絡し、保護されているアプリケーションがサポートするプロバイダのみファイルに含まれるように、FCC を変更するように指示します。
以下の手順では、FCC を変更する方法について説明します。
以下の手順に従います。
  1. Web エージェント ホスト システムにログインします。
  2. agent_home
    \samples\forms に移動します
    agent_home
    は Web エージェントのインストール パスを指定します。
  3. oauth.fcc ファイルをテキスト エディタで開きます。
  4. FCC を確認します。プロバイダを追加または削除するかどうかを判断します。
  5. FCC でプロバイダのセクションを見つけます。テキスト文字列
    var oauth_providers
    を検索します。
  6. 不足しているプロバイダ エントリを var oauth_providers セクションに追加します。
    apps
    設定の横にアプリケーションの名前を指定します。
    以下に、プロバイダ エントリの 2 つの例を示します。
    var oauth_providers = { google : { name : 'Google', image :'images/google.gif', apps : 'ForwardIncGoogleApp' }, facebook : { name : 'Facebook', image :'images/facebook.gif', apps : 'ForwardIncFacebookApp' }
  7. テキスト文字列
    var oauth_applications
    を検索して、FCC のアプリケーション セクションを見つけます。各アプリケーションで、以下の情報を指定します。
    • アプリケーション名。
    • ラベル(ユーザがプロバイダ アイコンをクリックした後に表示されるテキスト)。
    • イメージ。イメージ値は、FCC が表示するプロバイダ アイコンの場所を表します。
    以下に、アプリケーション エントリの 2 つの例を示します。1 つは FowardIncGoogleApp、もう 1 つは ForwardIncFacebookApp という名前です。
    重要:
    これらのアプリケーション名は、値の例を示すことのみが目的です。展開には、実際のアプリケーション名を入力します。また、この FCC ファイルに入力するアプリケーション名は、oauthproviders.xml ファイルに入力するアプリケーション名と一致する必要があります。
    }; var oauth_applications = { ForwardIncGoogleApp : { name : 'ForwardIncGoogleApp', label : 'Login using google application', image : 'images/google.ico' } ForwardIncFacebookApp : { name : 'ForwardIncFacebookApp', label : 'Login using facebook application', image : 'images/facebook.ico' },
  8. プロバイダ エントリをコメント アウトして、FCC から任意の不要なプロバイダを削除します。プロバイダ名の前に、コメント文字列
    /*
    を入力します。エントリの最後に、コメント文字列を閉じる
    */
    を入力します。例:
    /* google : { name : 'ForwardIncGoogleApp', image :'images/google.gif', apps : 'ForwardIncGoogleApp' },*/
  9. すべての変更が完了したら、スクリプトを保存します。
  10. Web サーバを再起動します。
OAuth プロバイダ設定ファイルの変更
OAuth プロバイダ設定ファイル(oauthproviders.xml)が、ポリシー サーバにインストールされます。プロバイダ設定ファイルには、各プロバイダおよび保護されているアプリケーションの設定の詳細が含まれます。ファイルに正しい設定が含まれていないと、認証は失敗します。
ファイルに関する情報:
  • デフォルトでは、ファイルには、OAuth FCC が利用可能にするすべてのプロバイダのサンプル設定が含まれます。サンプル設定を確認し、必要に応じてそれらを変更します。
    重要:
    値はサンプルのみです。認証方式を展開する前に、OAuth プロバイダでの設定をすべて確認することをお勧めします。
  • 複数のアプリケーションでプロバイダ設定を再利用するため、プロバイダ設定は登録されているアプリケーション設定から分離されています。
  • プロバイダ設定の詳細については、アプリケーション設定の詳細に従う必要があります。各アプリケーションは、事前定義済みプロバイダ設定のいずれかを使用します。
  • 各アプリケーションには、登録で使用するため、いずれかのプロバイダに対する PROVIDERLINK が必要です。
  • FCC ファイル内にプロバイダ設定を追加または変更する場合は、このファイル内のプロバイダの設定も追加または変更します。
  • このファイルに入力するアプリケーション名は、oauth.fcc ファイルに入力するアプリケーション名と一致する必要があります。
  • 複数の OAuth 認証方式を設定する場合、各方式で独自のプロバイダ設定ファイルを使用できます。
以下の手順に従います。
  1. ポリシー サーバ ホスト システムにログインします。
  2. 以下の場所に移動します。
    siteminder_home
    \config\properties
    • siteminder_home
      ポリシー サーバのインストール パスを指定します。
  3. バックアップとして、デフォルトのプロバイダ設定ファイルのコピーを作成します。
  4. oauthproviders.xml ファイルを開きます。
  5. ファイルを確認し、必要な OAuth プロバイダ設定が利用可能かどうかを判断します。プロバイダを追加するには、以下の手順に従います。
    1. 既存の OAuth プロバイダ ノードおよびその子ノードをすべてコピーします。すべてのプロバイダ ノードは、以下のルート ノード内に含まれています。
      <OAuthProvider> </OAuthProvider>
    2. 新しい OAuth プロバイダ ノードおよびその子ノードをすべて以下のルート ノードに追加します。
      <TrustedOAuthProviders> </TrustedOAuthProviders>
  6. 各プロバイダの設定を行います。以下の設定の値を更新します。
    • OAuth providername
      このノードの OAuth プロバイダを識別します。プロバイダの名前を入力します。
      注:
      プロバイダ名の入力には小文字を使用します。
    • AuthorizationURL
      このプロバイダの許可サーバ エンドポイント URL を指定します。この URL は、ユーザの認証が成功した後に許可トークンを生成する必要があります。
      Google の例: https://accounts.google.com/o/oauth2/auth
      Facebook の例: https://www.facebook.com/dialog/oauth
    • AccessTokenURL
      アクセス トークン エンドポイント URL を指定します。アプリケーション設定の詳細と許可コードを交換することにより、アクセス トークンに対するクエリを行うことができます。
      Google の例
      : https://accounts.google.com/o/oauth2/token
      Facebook の例:
      https://graph.facebook.com/oauth/access_token
  7. 各登録済みアプリケーションの設定を行います。アプリケーション ノードおよびすべての子ノードは、ルート ノードの下に存在します。
    <Application> </Application>
    以下の設定の値を更新します。
    • Application appname
      OAuth に登録済みのアプリケーションの設定およびユーザ認証設定を識別します。エンド ユーザは、OAuth 認証の設定を使用するために、FCC ページでこの識別子を指定する必要があります。
      例: ForwardIncGoogleApp, ForwardIncFacebookApp
      重要:
      これらのアプリケーション名は、値の例を示すことのみが目的です。展開には、実際のアプリケーション名を入力します。また、このファイルに入力するアプリケーション名は、oauth.fcc ファイルに入力するアプリケーション名と一致する必要があります。
    • ApplicationURL
      登録済みのアプリケーション URL を指定します。アプリケーションの登録時に入力したものと同じリダイレクト URI(Google)またはサイト URL(Facebook)で、この設定の値を更新します。たとえば、Google Redirect URI 値が以下に設定されている場合:
      URI をリダイレクトします
      : https://fedserver.bizpartnerinc.ca/siteminderagent/forms/oauthcb.fcc
      このファイル内の ApplicationURL の値は次のとおりです:
      </OAuthProvider>
          <Application appname="ForwardIncGoogleApp">
              <ApplicationURL>
                  <!-- HOSTNAME : WebAgent/SPS host name -->
                 https://fedserver.bizpartnerinc.ca/siteminderagent/forms/oauthcb.fcc
              </ApplicationURL>
      URL の形式は、SecureURLs エージェント パラメータの値によって異なります。管理 UI から SecureURLs パラメータの値を確認します。このパラメータは、ホスト エージェント用のエージェント設定オブジェクトにあります。
      • SecureURLs パラメータが[はい]に設定されている場合は、以下の形式で URL を入力します。
        http(s)://agent_host
        /siteminderagent/forms/oauthcb.fcc?SMQUERYDATA=Sample
        例: https://myagent.ca.com/siteminderagent/forms/oauthcb.fcc?SMQUERYDATA=Sample
      • SecureURLs パラメータが[いいえ]に設定されている場合は、以下の形式で URL を入力します。
        http(s)://agent_host
        /siteminderagent/forms/oauthcb.fcc
    • ClientID
      OAuth サーバで登録されたクライアント アプリケーションの識別子が含まれています。生成されたクライアント ID で、この設定の値を更新します。アプリケーションが正常に登録されると、許可サーバがこの ID 値を提供します。
    • 秘密キー
      ClientID に関連付けられている秘密キーを示します。ClientID に関連付けられている秘密キーで、この設定の値を更新します。アプリケーションが正常に登録されると、許可サーバがこの値を提供します。
    • PROVIDERLINK
      アプリケーションをプロバイダとリンクします。定義済みのプロバイダの providername 値を指定します。このアプリケーションは、OAuth 認証の実行中にプロバイダ設定を使用します。
      例: google、facebook
    • Scope
      アプリケーションがユーザに要求する必要な権限のタイプを指定します。たとえば、スコープ値が https://www.googleapis.com/auth/userinfo.profile の場合、アプリケーションは、基本的なユーザ プロファイル情報への読み取り専用アクセス権を取得できます。
      このスコープ値は、許可トークン リクエストで渡されます。クライアントは、コードを使用して、UserInfoURL 属性で指定されたリソース URL にアクセスできます。管理者は、この属性に対して単一の値、またはスペースで区切られた複数の値を指定できます。
    • UserInfoURL
      生成されたアクセス トークンを使用してユーザ情報を問い合わせることができる、単一の URL、またはスペースで区切られた複数の URL を指定します。URL は、クライアントがアクセスを試行しているリソースを表します。
    • UserAttribute
      ユーザ属性を指定します。OAuth ユーザ情報からのユーザを識別するクレームで、この値を更新します。この属性の値は、ユーザを特定するために使用されます。たとえば、このユーザ属性は「email」にすることができます。
  8. ファイルを保存して閉じます。
エージェントでの FCCCompatMode の無効化
cam エージェント設定で、FCCCompatMode 設定を無効にします。
以下の手順に従います。
  1. 管理 UI にログインします。
  2. [インフラストラクチャ]-[エージェント]をクリックします。
  3. [エージェント設定オブジェクト]をクリックします。
  4. [エージェント設定オブジェクト]ページが表示されます。
  5. 検索条件を指定して、[検索]をクリックします。
    検索条件に一致するエージェント設定オブジェクトのリストが表示されます。
  6. cam エージェントを選択して変更します。
  7. [変更]をクリックします。
  8. FCCCompatMode を no に設定します。
  9. 変更を保存します。
OAuth 認証方式の設定
管理 UI を使用して、OAuth 認証方式オブジェクトを設定します。
ネットワークに複数の Cookie ドメインが含まれ、それぞれの Cookie ドメインに認証方式が必要な場合は、Cookie ドメインごとに個別の認証方式オブジェクトを設定します。
注:
Solaris プラットフォーム上の操作の場合には、sun.security.provider.Sun プロバイダが最初のプロバイダとして登録されるように、ディレクトリ
jre_root
/lib/security 内の java.security ファイルを変更します。
以下の手順に従います。
  1. [インフラストラクチャ]-[認証]-[認証方式]をクリックします。
  2. [認証方式の作成]をクリックします。
  3. 新しいオブジェクト オプションを選択し、[OK]をクリックします。
    [認証方式の作成]ページが表示されます。
  4. 名前および保護レベルを入力します。
  5. [認証方式タイプ]リストから[OAuth テンプレート]を選択します。
    方式固有の設定が表示されます。
  6. その他のパラメータを設定し、[サブミット]をクリックします。
  7. (オプション)接続タイムアウトおよびソケット タイムアウトの値を設定するには、以下の手順を実行します。
    1. <
      installation_home
      >/config/ に移動し、JVMOptions.txt ファイルを開きます。
    2. ファイルに以下のパラメータを追加します。
      -Dauthscheme.oauth.connection_timeout=30000
      -Dauthscheme.oauth.socket_timeout=60000
    3. 必要に応じて、値を変更します。 
    4. 変更を保存します。
重要
: プロキシ設定のいずれかを変更する場合は、ポリシー サーバを再起動します。
OAuth 認証方式を設定するためのタスクを完了しました。これで、ポリシーまたはアプリケーション コンポーネント内の認証方式を使用して、リソースを保護することができます。