JSONウェブトークンを使う認証
認証プロセスの概要
JSON ウェッブトークン (JWT) は、ABBYY FlexiCapture 12 アプリケーションサーバー と第三者のサービスの間でデータを安全に転送するために使用されるデータ転送フォーマットです。JWTによる認証の場合、アプリケーションサーバーには識別データは送信されません。認証は第三者のサービスで行われ、それに続いてアプリケーションサーバーには、ユーザーが信頼できるサービスによって認証されたことが通知されます。
実行
JSONデータの取得
JSONデータのサンプル:
{"alg":"RS256","kid":"-JLCtyyTyF69AZrtjpk-xGs-nUE","x5t":"-JLCtyyTyF69AZrtjpk-xGs-nUE","typ":"JWT"}.
{"nameid":"user","nbf":1572267172,"exp":1572267772,"iss":"ABBYY","aud":"test JWT app"}
ユーザー証明書を含むJSONデータは、JSON ウェッブトークン(JWT)を作成するためにBase64で暗号化されます。
以下のサンプルリクエストは、JWTトークンを作成します:
アプリケーションサーバーへJWTを送信
JWT は、次の URL を使用して アプリケーションサーバーに送信する必要があります:https://<ApplicationServer>/Flexicapture12/Server/jwt.これは、POSTリクエストを使用して行われます。
注:テナントを使用している場合は、テナントの識別子をアプリケーションサーバーURL:https://<ApplicationServer>/Flexicapture12/Server/jwt?Tenant=MyTenantName に追加してください
static async Task<string> AuthenticateByJwtAsync( string jwtToken )
{
ifvar fields = new Dictionary<string, string>
{
{ "JwtToken", jwtToken }
};
FormUrlEncodedContent content = new FormUrlEncodedContent( fields );
( var client = new HttpClient() )の使用
{
HttpResponseMessage response = await client.PostAsync( jwtServiceUrl, content );
if ( response.StatusCode == HttpStatusCode.OK )
{
return response.Headers.GetValues( "AuthTicket" )?.First() ?? throw new Exception( "AuthTicket header not found" );
}
他に
{
新しい例外を出す(await response..Content.ReadAsStringAsync() );
}
}
}
認証を有効にするには、ログイン情報とJWT(nameidノード値に内包)内の識別子が一致したユーザーが、アプリケーションサーバーで登録をする必要があります
アプリケーションサーバーは以下のようなレスポンスを返します:
チケットフィールド内の値は認証された ABBYY FlexiCapture 12チケットです。このチケットを使って、認証を必要とするすべてのアプリケーションサーバーインターフェイスへの呼び出しを行うことができます。サービスには ABBYY FlexiCapture 認証を使用してアクセスする必要があります。すなわち、https://<ApplicationServer>/flexicapture12/Server/FCAuth/orhttps://<ApplicationServer>/flexicapture12/Server/MobileApp/. で始まるアドレスです。
認証された ABBYY FlexiCapture 12 チケットの使用
認証された ABBYY FlexiCapture 12 チケットをサーバーに渡すには、クッキーファイル (ファイル名は FlexiCaptureTmpPrn である必要があります) または認証:Bearer ヘッダーを使用します。
例:
認証:Bearerヘッダーを使用することをお勧めします(Cookieは下位互換性のためにのみサポートされています)。
アプリケーションサーバーで信頼できる証明書を設定する
アプリケーションサーバは、識別プロバイダーから受け取ったデータを確認します。アプリケーションサーバーがこのデータを信頼するには、信頼できる機関のアプリケーションサーバーデータベースから機関によって発行されたカスタム証明書で署名する必要があります。
証明書を ABBYY FlexiCapture データベースにインポートします。これで、この証明書を使ってデータをチェックします。詳しくは、シングルサインオンの設定をご覧ください。
チェックに失敗した場合、アプリケーションサーバー は Web.config ファイル内の<appSettings>設定で AllowMixedModeCertificateValidationパラメータを参照します。このパラメータがtrueに設定されている場合、アプリケーションサーバーを実行しているコンピュータのローカルコンピュータ証明書ストアの信頼できるルート証明機関フォルダに追加された証明書を使用してチェックが行われます。
データベースに証明書が追加されていない場合は、信頼できるルート証明機関フォルダにある証明書を使用してチェックが行われ、AllowMixedModeCertificateValidation パラメータは無視されます。
プロジェクトと付属資料をダウンロードするには、こちらのリンクを利用してください:JWT_Example.zip
12.04.2024 18:16:06