FlexiCapture 12のSAML 2.0 IDプロバイダを使用した認証

認証プロセスの概要

SAML認証は、第三者のIDプロバイダを使用することで (例:GoogleもしくはFacebook)、ABBYY FlexiCapture 12ユーザーが認識データ(例えばユーザーネームやパスワードなど)をFlexiCaptureのアプリケーションサーバーコンポーネントへ送信しないようにします。そして信頼できる第三者からアプリケーションサーバーへの安全な認証に関するデータを送信します。

ユーザーアプリケーション上でのSAML認証プロセスは以下の通りです:

  • 第三者のIDプロバイダによる認証
  • ユーザーのSAML認証データを第三者のIDプロバイダから取得
  • SAML認証データをアプリケーションサーバーに送信
  • 認証チケットをアプリケーションサーバーから取得

その後、アプリケーションサーバーからの要求に当該チケットが使用できるようになります。

注:FlexiCaptureデータベースにユーザーアカウントが存在している必要があり、必要なすべての許可を持っていなければなりません。

実装

SAMLデータの取得

第三者のIDプロバイダからのSAMLデータは以下のようなフォーマットです(この例はOneLoginからのものです):

どのように認証データを第三者のIDプロバイダから取得するかの詳細については、IDプロバイダ文書をご覧ください。例えば、OneLoginは既製のツールキットを複数のプログラミング言語におけるSAML認証の為に用意しています。

SAMLデータをFlexiCapture12アプリケーションサーバーに送信

POSTリクエストをhttp://<Application Server>/Flexicapture12/Server/Saml.に作成することで、Base64のSAMLデータをエンコードし、アプリケーションサーバーに送信する。SAMLデータSAMLレスポンスを含むフィールド名称を設定

public static async Task sendSamlToServer( string samlData )
    {     
        string serviceUrl = "http://<Application Server>/Flexicapture12/Server/SAML";
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create( serviceUrl );
        request.Method = "POST";

        var fields = new Dictionary<string, string>();
        fields.Add( "SAMLResponse", Convert.ToBase64String( Encoding.Default.GetBytes( samlData ) ) );
            HttpClient client = new HttpClient();
        FormUrlEncodedContent content = new FormUrlEncodedContent( fields );
        HttpResponseMessage response = await client.PostAsync( serviceUrl, content );
        if( response.StatusCode == HttpStatusCode.OK ) {
            processServerResponse( response.Content.ToString() );
        } else {
            processServerError( response.StatusCode, response.Content.ToString() );
        }
    }
    

テナントをご利用中の場合は、テナントの識別子をサーバーURLに追加してください。例:http://<ApplicationServer>/Flexicapture12/Server/Saml?Tenant=MyTenantName

認証を有効にするには、ログイン情報とSAMLデータ(<saml:NameID> タグ内に内包)内の識別子が一致したユーザーが、アプリケーションサーバーで登録をする必要があります。

アプリケーションサーバーは以下のようなレスポンスを返します:

<ticket> タグ内の値はFC12チケットにより認証されます。すべての認証を要求するアプリケーションサーバーインターフェイスにアクセスするためにこのチケットを使用できます。FlexiCaptureウェブサービスに対する要求はFlexiCapture認証 (addresses starting with http://<ApplicationServer>/flexicapture12/Server/FCAuth/ or http://<ApplicationServer>/flexicapture12/Server/MobileApp/)を使用して行われなければなりません。

認証されたFC12チケットを使用

クッキーファイルを使用することでチケットをサーバーに送信出来ます。(ファイルはFlexiCaptureTmpPrnという名前でなければなりません)もしくは認証:送信者ヘッダー例:

認証:Bearer 82BD00C6601EB7F8EF4265450F934D4103C5CA2F010DE1C5FAB4CC830A82300C743D09E5477279733F283D0B6E1C93ACC30FE353D4D9396649965432AAA7994078C3CC63567A95A35E03DA6FDE020F57
    

このヘッダーを使用することを推奨します。クッキーは旧ソリューションとの互換性を維持するためにサポートされています。

認証が成功した場合、サーバーレスポンスはアップデートされたチケットの値を同一ログインのクッキーファイル(FlexiCaptureTmpPrn)とAuthTIcketヘッダーを含みます。次の要求はアップデートされたチケットを使用して行われなければなりません(一定時間が経つとチケットは無効となります)。

アプリケーションサーバーで信頼できる認証を確立する。

The Application Server will check the data received from the identity provider. In order for the Application Server to trust this data, it should be signed with a custom certificate issued by an authority from the Application Server database of trusted authorities.

Import the certificate to the ABBYY FlexiCapture database. Now data will be checked using this certificate. For more information, see Setting up Single Sign-On.

If the check fails, the Application Server will refer to the AllowMixedModeCertificateValidation parameter in the <appSettings> settings in the Web.config file. If this parameter is set to true, the check will be carried out using the certificate added into the Trusted Root Certification Authorities folder in the Local Computer certificate store on the computer that is running the Application Server.

If no certificates are added to the database, the check will be carried out using the certificate located in the Trusted Root Certification Authorities folder, and the AllowMixedModeCertificateValidation parameter will be ignored.

プロジェクトと添付資料をダウンロードします:SAML_Example.zip

10.11.2020 12:08:06


Please leave your feedback about this article