2 要素認証
2 要素認証
使用中の認証メカニズムの他に、InterSystems IRIS は 2 要素認証の使用をサポートしています。つまり、インターシステムズの認証では、エンドユーザが 2 つの別々のエレメントつまり “要素”を持つことを要求できます。エンドユーザの観点では、最初の要素はユーザが知っているもの (パスワードなど)、2 番目の要素はユーザが持っているもの (スマートフォンなど) です。InterSystems IRIS は、以下の 2 つのメカニズムのいずれかを使用してエンドユーザの 2 要素認証を実行します。
-
SMS テキスト認証 — InterSystems IRIS はセキュリティ・コードをエンドユーザの電話に SMS で送ります。エンドユーザは、指示に従ってそのコードを入力します。
-
タイムベース・ワンタイム・パスワード (TOTP) — エンドユーザは最初に InterSystems IRIS から秘密鍵を受け取ります。この鍵は、InterSystems IRIS とエンドユーザのアプリケーション (携帯電話のアプリケーションなど) または物理的な認証デバイスとの間の共有秘密です。両者が、この鍵およびその他の情報を使用して、検証コードとして作用し、InterSystems IRIS の指示に従ってエンドユーザが入力する TOTP を生成します。TOTP は 60 秒後に期限切れになり、エンドユーザはこれを 1 回しか使用できません。これがタイムベースおよびワンタイムと呼ばれている理由です。
このセクションでは、以下のトピックについて説明します。
2 要素認証の設定の概要
2 要素認証の設定の主な手順は以下のとおりです。
-
インスタンス全体に対する 2 要素認証の有効化および構成を行います。インスタンスを構成して SMS テキスト認証、TOTP 認証、またはその両方を使用できます。TOTP 認証の詳細は、"2 要素の TOTP の概要" を参照してください。
-
SMS テキスト認証の場合、必要に応じて携帯電話サービス・プロバイダの構成を行います。これには以下が含まれます。
-
ある携帯電話サービス・プロバイダが必要であるのに、既定のプロバイダのリストに含まれていない場合、このサービス・プロバイダを追加する。
-
既存のプロバイダに対し、必要に応じて構成情報を変更する (既定または追加)。
-
-
以下のサービスを適切に構成します。
-
%Service_Bindings — サービスに対して 2 要素認証を有効化し、次の手順に進みます。
-
%Service_Console および %Service_Terminal — 単にサービスに対して 2 要素認証を有効化します。必要な手順はこれですべてです。
-
%Service_WebGateway — %Service_WebGateway の 2 要素認証を一元的に有効にする方法はありません。次の手順に進みます。
各サービスに対していずれかまたは両方の認証のタイプを有効にできます。サービスの詳細は、"サービス" を参照してください。
-
-
クライアント・サーバ・アプリケーションおよび Web アプリケーションを適切に構成します。
-
クライアント・サーバ・アプリケーション (%Service_Bindings を使用するアプリケーション) の場合、2 要素認証をサポートするクライアント・アプリケーションに適切な呼び出しを追加します。これは、使用中のクライアント側のコンポーネント (Java、JDBC、.NET など) に応じて異なるプログラミング・タスクです。
Important:2 要素認証は、人のエンドユーザからの応答をリアルタイムで受け取るように設計されています。1 つのセッションが実際には複数の連続セッションから構成されているとエンドユーザが見なしている場合、2 番目の要素を繰り返し要求することは、予期しない困難なユーザ・エクスペリエンスをもたらすことになる場合があります。クライアント・サーバ・アプリケーションでは、基礎プロトコルによって、クライアントが接続の確立、切断、再確立を繰り返し強いられることがよくあります。この種のアプリケーションでは、このような作業のために、2 要素認証の使用は不適切になります。
-
Web アプリケーション (%Service_WebGateway を使用するアプリケーション) については、2 要素認証をサポートするように各アプリケーションを構成します。
Note:Windows では %Service_Console サービスを使用し、他のオペレーティング・システムでは %Service_Terminal サービスを使用する InterSystems IRIS ターミナルの場合、サーバ側の設定の他に必要な構成はありません。InterSystems IRIS は、これらのシステムにおいてプロンプトを制御するため、2 要素認証プロンプトを使用して (認証メカニズムに関係なく) 標準プロンプトに従い、エンドユーザ入力をこれに応じて処理するだけです。
-
-
代行認証を使用する場合は、必要に応じて ZAUTHENTICATE.mac ルーチンを変更します。詳細は "代行認証の使用法" を参照してください。
-
各エンドユーザを構成し、SMS テキスト認証または TOTP 認証を有効にします。エンドユーザは、両方のメカニズムを使用するように構成できますが、同時に両方のメカニズムを有効にすることはできません。
2 要素の TOTP の概要
タイムベース・ワンタイム・パスワード (TOTP) 認証を使用した 2 要素認証は以下のように動作します。
-
TOTP を生成する認証デバイスまたはアプリケーションを選択し、そのデバイスまたはアプリケーションを提供するか、ユーザがそのデバイスまたはアプリケーションを所持していることを確認します。
-
2 要素の TOTP 認証向けにエンドユーザを構成すると、システムは秘密鍵を生成します。この鍵は、Base 32 でエンコードされてランダム化されたビット文字列として表示されます。InterSystems IRIS とエンドユーザはこの秘密鍵を共有します (これが共有秘密と呼ばれる理由です)。InterSystems IRIS とエンドユーザの両方の認証デバイスまたはアプリケーションはこの秘密鍵を使用して、検証コードとして作用する TOTP 自体を生成します。[検証コード] フィールドまたはプロンプトにエンドユーザが入力する TOTP は 6 桁の文字列で、定期的 (既定では 30 秒毎) に新しいものが生成されます。
-
ログイン時、エンドユーザが InterSystems IRIS にパスワードを入力した後、InterSystems IRIS は追加で TOTP の入力を求めます。エンドユーザが TOTP を入力すると、ログイン・プロセスが完了します。
エンドユーザは、以下のいくつかの方法で InterSystems IRIS から秘密鍵を取得できます。
-
2 要素の TOTP 認証をサポートするようにエンドユーザのアカウントを構成するとき、エンドユーザの [ユーザ編集] ページにエンドユーザの秘密鍵が発行者の名前およびエンドユーザのアカウント名と共に表示されます。上記の情報をすべて含む QR コードも表示されます (QR コードは下の写真のようなマシンが読むことができるコードです)。ここでエンドユーザは、コードをスキャンするか情報を手入力することによって、情報を認証デバイスまたはアプリケーションに入力できます。
-
Web アプリケーションまたはターミナル・セッションにログインするとき (%Service_Console または %Service_Terminal を使用) エンドユーザに秘密鍵を表示することを選択する場合、[ユーザ編集] ページの [次回のログイン時にタイムベース・ワンタイム・パスワードの QR コードを表示する] フィールドを選択することによってこの動作を有効にできます。これを行うと、ターミナル・セッションはエンドユーザの発行者、アカウント、および秘密鍵を表示します。Web アプリケーションは、エンドユーザの発行者、アカウント、および秘密鍵を QR コードと共に表示します。ここで、エンドユーザはコードをスキャンするか、情報を手入力できます。
Important:このオプションはお勧めしません。詳細は、以下の注意事項を参照してください。
以下は、2 要素の TOTP 認証を使用するときの重要なセキュリティ上の問題です。
-
安全でない環境では、秘密鍵や QR コードを転送しないでください。安全なネットワークでも帯域外転送をお勧めします (秘密鍵は InterSystems IRIS または InterSystems IRIS アプリケーションにログインする手段をエンドユーザに提供します。ユーザまたはエンドユーザが秘密鍵の安全性を確保できない場合、攻撃者がアクセスできるようになる可能性があり、秘密鍵がセキュリティの役に立たなくなります)。
-
組織に対して 2 要素の TOTP 認証を構成するとき、各エンドユーザに秘密鍵を直接渡すか、電話で伝えるか、または管理者が立ち会っている状況でエンドユーザに QR コードをスキャンさせることを強くお勧めします。こうすることによって、秘密鍵を取得する個人を認証する機会がもたらされます。
ネットワークを介して秘密鍵を渡すと、漏えいの可能性が高くなります。これには、Web アプリケーション、コンソール、またはターミナルに最初にログインするときにエンドユーザに秘密鍵を表示することが含まれます。また、Web アプリケーションに最初にログインするときにエンドユーザに QR コードを表示することも含まれます。

2 要素の TOTP 認証を使用していて、QR コードを生成する場合、InterSystems IRIS サーバで Java 1.7 以降を実行している必要があります。Java なしでも InterSystems IRIS で 2 要素の TOTP 認証を使用できますが、認証デバイスまたはアプリケーションでエンドユーザが発行者、アカウント、および鍵の値を手入力する必要があります。
サーバの 2 要素認証の構成
InterSystems IRIS サーバの 2 要素認証を構成する手順は以下のとおりです。
-
インスタンス全体に対する 2 要素認証の有効化および構成を行います。インスタンスを構成して SMS テキスト認証、TOTP 認証、またはその両方を使用できます。
-
SMS テキスト認証の場合、必要に応じて携帯電話サービス・プロバイダの構成を行います。これには以下が含まれます。
-
ある携帯電話サービス・プロバイダが必要であるのに、既定のプロバイダのリストに含まれていない場合、このサービス・プロバイダを追加する。
-
既存のプロバイダに対し、必要に応じて構成情報を変更する (既定または追加)。
-
インスタンスに対する 2 要素認証設定の有効化および構成
InterSystems IRIS インスタンス (サーバ) 向けに 2 要素認証を設定すると、以下の 1 つまたは両方を有効にできます。
-
[2 要素のタイムベース・ワンタイム・パスワード認証] (TOTP 認証)
-
[2 要素の SMS テキスト認証]
いずれかの形式の 2 要素認証を有効にするための手順は以下のとおりです。
-
管理ポータルのホーム・ページで、[認証/Web セッション・オプション] ページ ([システム管理] > [セキュリティ] > [システム・セキュリティ] > [認証/Web セッション・オプション]) に移動します。
-
2 要素の TOTP 認証を有効にするには、[認証/Web セッション・オプション] ページで、[2 要素のタイムベース・ワンタイム・パスワード認証を許可] チェック・ボックスにチェックを付けます。[2 要素のタイムベース・ワンタイム・パスワードの発行者] フィールドが表示されます。ここにこの InterSystems IRIS インスタンスを識別する文字列を入力します。
-
2 要素の SMS テキスト認証を有効にするには、[認証/Web セッション・オプション] ページで、[2 要素の SMS テキスト認証を許可] チェック・ボックスにチェックを付けます。以下の各フィールドが表示されます。
-
[2要素タイムアウト (秒)] — 1 回限りのセキュリティ・トークンを入力する際のタイムアウト秒数 (オプション)。
-
[SMTPサーバのDNS名] — SMS テキスト・メッセージの送信にこの InterSystems IRIS インスタンスが使用している SMTP (Simple Mail Transfer Protocol) サーバの DNS (Domain Name Service) 名 (smtp.example.com など) (必須)。
-
[From (アドレス)] — メッセージの “From” フィールドに表示されるアドレス (必須)。
-
[SMTPユーザ名] — (SMTP サーバが要求する場合) SMTP 認証のユーザ名 (オプション)。
-
[SMTPパスワード] および [SMTPパスワード (確認)] — SMTP 認証に対して入力および確認されるパスワード(オプション)。
-
-
[保存] をクリックします。
-
インスタンスが SMS テキスト認証をサポートしている場合、必要に応じて携帯電話サービス・プロバイダを構成します。これらの手順について、以下のセクションで説明します。
インスタンス自体に対してこのプロセスを完了した後、インスタンスのサービス、Web アプリケーション、クライアント・サーバ・アプリケーションなど、その他の構成を実行する必要があります。また、インスタンスのユーザを構成する必要があります。"2 要素認証の設定の概要" にこれに関する一般的な指示が提示されています。
携帯電話サービス・プロバイダの構成
携帯電話サービス・プロバイダの構成に関連する項目は以下のとおりです。
携帯電話サービス・プロバイダの作成または編集
携帯電話サービス・プロバイダを作成または編集する手順は以下のとおりです。
-
管理ポータルのホーム・ページで、[携帯電話サービスプロバイダ] ページ ([システム管理] > [セキュリティ] > [携帯電話]) に移動します。
-
プロバイダを新規作成するには、[新規プロバイダ] をクリックします。
-
既存のプロバイダを編集するには、プロバイダのテーブルにあるプロバイダの行で [編集] をクリックします。
選択した携帯電話サービス・プロバイダの [電話プロバイダ編集] ページが表示されます。
-
-
[電話プロバイダ編集] ページで、以下のフィールドそれぞれの値を入力または変更します。
-
[サービスプロバイダ] — 携帯電話サービス・プロバイダの名前 (通常は会社名)。
-
[SMSゲートウェイ] — SMS (short message service) メッセージを送信するために携帯電話サービス・プロバイダが使用するサーバのアドレス。
-
携帯電話サービス・プロバイダの削除
携帯電話サービス・プロバイダを削除する手順は以下のとおりです。
-
管理ポータルのホーム・ページで、[携帯電話サービスプロバイダ] ページ ([システム管理] > [セキュリティ] > [携帯電話]) に移動します。
-
[携帯電話サービスプロバイダ] ページにあるプロバイダの行で [削除] をクリックします。
-
削除の確認を求めるプロンプトが表示されたら、[OK] をクリックします。
事前定義された携帯電話サービス・プロバイダ
InterSystems IRIS には、事前定義された携帯電話サービス・プロバイダのリストが付属しており、それぞれのプロバイダには SMS (short message service) ゲートウェイが事前に設定されています。以下のとおりです。
-
AT&T Wireless — txt.att.net
-
Alltel — message.alltel.com
-
Cellular One — mobile.celloneusa.com
-
Nextel — messaging.nextel.com
-
Sprint PCS — messaging.sprintpcs.com
-
T-Mobile — tmomail.net
-
Verizon — vtext.com
サービスに対する 2 要素認証の有効化または無効化
%Service_WebGateway に対して、2 要素認証を一元的に有効または無効にすることができる場所はありません。"2 要素認証向けの Web アプリケーションの構成" の説明に従って、各アプリケーションに対して 2 要素認証を有効化または無効化します。
%Service_Bindings、%Service_Console、および %Service _Terminal に対して 2 要素認証を有効化または無効化する手順は以下のとおりです。
-
管理ポータルのホーム・ページで、[サービス] ページ ([システム管理]→[セキュリティ]→[サービス]) に移動します。
-
[サービス] ページで、いずれかの形式の 2 要素認証を有効にするサービスの名前をクリックします。選択したサービスの [サービス編集] ページが表示されます。
-
そのサービスの [サービス編集] ページで、[2 要素の SMS] チェック・ボックス、[2 要素のタイムベース・ワンタイム・パスワード] チェック・ボックス、またはその両方にチェックを付けるか、またはチェックを外します。これらの各チェック・ボックスは、そのインスタンスに対して 2 要素認証が有効になっている場合にのみ表示されます。
-
[保存] をクリックします。
2 要素認証向けの Web アプリケーションの構成
インスタンスに対して 2 要素認証を有効にしたら、これを使用するすべての Web アプリケーションでもこれを有効にする必要があります。アプリケーションでこれを有効にする手順は以下のとおりです。
-
管理ポータルのホーム・ページで、[ウェブ・アプリケーション] ページ ([システム管理]→[セキュリティ]→[アプリケーション]→[ウェブ・アプリケーション]) に移動します。
-
[ウェブ・アプリケーション] ページで、2 要素認証を有効にするアプリケーションの名前をクリックし、そのアプリケーションの [編集] ページを表示します。
-
[編集] ページの [セキュリティ設定] セクションで、[2 要素の SMS] チェック・ボックス、[2 要素のタイムベース・ワンタイム・パスワード] チェック・ボックス、またはその両方にチェックを付けるか、またはチェックを外します。これらの各チェック・ボックスは、そのインスタンスに対して 2 要素認証が有効になっている場合にのみ表示されます。
Web アプリケーションでは 2 要素認証と Web サービスの両方を同時にサポートすることはできません。
2 要素認証向けのエンドユーザの構成
2 要素認証向けに 1 回限りのセキュリティ・トークンを受信するようにエンドユーザを構成する手順は以下のとおりです。
-
管理ポータルのホーム・ページで、[ユーザ] ページ ([システム管理] > [セキュリティ] > [ユーザ]) に移動します。
-
既存のユーザの場合は、編集するユーザの名前をクリックします。新規ユーザの場合は、[新規ユーザ作成] をクリックしてユーザの作成を始めます (新規ユーザの作成の詳細は、"新規ユーザの作成" を参照)。これらのアクションのどちらを実行しても、そのエンドユーザの [編集] ページが表示されます。
-
[ユーザ編集] ページで、[SMS テキスト有効] または [タイムベース・ワンタイム・パスワード有効] を適切に選択します。
-
[SMS テキスト] を選択した場合、以下のフィールドをすべて入力する必要があります。
-
[携帯電話サービスプロバイダ] — ユーザに携帯電話サービスを提供する会社。リストからプロバイダを選択します。プロバイダがリストに表示されていない場合は、[新規プロバイダ] をクリックして、InterSystems IRIS インスタンスに新規プロバイダを追加します([新しいプロバイダーを作成] をクリックすると、[新しい携帯電話プロバイダーを作成] ウィンドウが表示されます。このウィンドウには、[サービスプロバイダ] フィールドおよび [SMSゲートウェイ] フィールドがあります。これらの目的は、"携帯電話サービス・プロバイダの作成または編集" で説明した目的と同じです)。
-
[携帯電話番号] — ユーザの携帯電話番号。これは 2 つ目の要素で、1 回限りのセキュリティ・トークンを含むテキスト・メッセージをユーザが受信する電話番号です。
-
-
[タイムベース・ワンタイム・パスワード有効] を選択した場合、ページに以下のフィールドおよび情報が表示されます。
-
[次回のログイン時にタイムベース・ワンタイム・パスワードの QR コードを表示する] — ユーザが次回ログインしたときに QR コードを表示するかどうか。選択されている場合、InterSystems IRIS は、次回のログイン時に QR コードを表示し、これをスキャンして認証デバイスまたはアプリケーションに取り込むようユーザに求めます。さらに、トークンを表示して提供し、認証プロセスの完了を促します。既定では、このオプションは選択されていません。このオプションは使用しないことをお勧めします。
-
[新しいタイムベース・ワンタイム・パスワードの鍵を生成する] — エンドユーザの新しい共有秘密と新しい QR コードの両方を作成して表示します。
Important:ユーザに新しいタイムベース・ワンタイム・パスワードの鍵を生成すると、ユーザの認証アプリケーションの現在の鍵は機能しなくなります。ログインする前に、ユーザは、QR コードをスキャンするか、または手入力して新しい鍵を認証アプリケーションに入力する必要があります(これは既存のセッションには影響しません)。
-
[発行者] — インスタンスの 2 要素の TOTP 認証を構成するときに設定した InterSystems IRIS インスタンスの識別子。
-
[アカウント] — InterSystems IRIS アカウントの識別子。これはアカウントのユーザ名です。
-
[Base32 のタイムベース・ワンタイム・パスワード (OTP) の鍵] — エンドユーザが認証デバイスまたはアプリケーションに入力する秘密鍵。
-
[QR コード] — 発行者、アカウント、および秘密鍵の値が格納されているスキャン可能なコード。
-
-
[保存] をクリックして、このユーザのこれらの値を保存します。
サービスが 2 要素認証を使用していて、エンドユーザが 2 要素認証を有効にしている場合、認証には以下が必要です。
-
SMS テキスト認証では、テキスト・メッセージを受信できる携帯電話。
-
TOTP 認証では、検証コードを生成できるアプリケーションまたは認証デバイス。
これらがないと、エンドユーザは認証できません。
-
SMS テキスト認証では、エンドユーザは携帯電話を所持していて、その電話でテキスト・メッセージを受信できる必要があります。これは、1 回限りのセキュリティ・トークンを含むテキスト・メッセージを SMS テキストとしてユーザが受信する電話番号です。
-
TOTP 認証では、ユーザは、QR コードをスキャンできるか、または TOTP (検証コードとして作用) の生成に必要な秘密鍵などの情報を受け入れることができる、認証デバイスまたはアプリケーションを所持している必要があります。
2 要素認証向けのバインディング・クライアントの構成
クライアント・サーバ接続は %Service_Bindings を使用します。この接続で 2 要素認証を使用するために必要なコードは、プログラミング言語によって異なります(コンソール、ターミナル、および Web アプリケーションではクライアント側の構成は必要ありません)。サポートされている言語には以下のものがあります。
クライアント側のコードで実行される処理は以下の 3 つです。
-
InterSystems IRIS サーバへの接続を確立した後、2 要素認証がサーバで有効になっているかどうかを確認します。通常、この確認にはクライアントの接続オブジェクトのメソッドが使用されます。
-
ユーザから 1 回限りのセキュリティ・トークンを取得します。この処理では一般的に、InterSystems IRIS と特別な関係のないユーザ・インタフェース・コードが使用されます。
-
1 回限りのセキュリティ・トークンを InterSystems IRIS サーバに提供します。この処理でも一般的に、接続オブジェクトのメソッドが使用されます。
ユーザが %Service_Bindings を使用してログインすると、InterSystems IRIS はスキャンする QR コードを表示しません。ユーザは、認証デバイスまたはアプリケーションを事前に設定しておく必要があります。
%Service_Bindings を使用して InterSystems IRIS サーバに接続するスタジオは、2 要素認証をサポートしていません。
Java および JDBC
Java では、2 要素認証のサポートは、以下のように IRISConnection クラスのメソッドを 2 つ使用します。
-
public boolean isTwoFactorEnabled() throws Exception
このメソッドは、サーバで 2 要素認証が有効になっているかどうか確認します。このメソッドはブーリアン値を返します。true は、2 要素認証が有効であることを意味します。
-
public void sendTwoFactorToken(String token) throws Exception
このメソッドは、1 回限りのセキュリティ・トークンをサーバに提供します。このメソッドは 1 つの引数 token をとります。これは、ユーザが受信した 1 回限りのセキュリティ・トークンです。
以下の例では、conn という接続のインスタンスを使用します。
-
この例では、このインスタンスのメソッドを使用して、2 要素認証が有効になっているかどうか確認します。
-
この例では、サーバにトークンを提供しようとし、これに失敗するとエラー処理が行われます。
2 要素認証がサーバで有効になっていて、クライアント・コードが 2 要素認証呼び出しを実装していない場合、サーバはクライアントとの接続を切断します。
// Given a connection called "conn"
if (conn.isTwoFactorEnabled()) {
// Prompt the user for the two-factor authentication token.
// Store the token in the "token" variable.
try {
conn.sendTwoFactorToken(token);
}
catch (Exception ex) {
// Process the error from a invalid authentication token here.
}
}
.NET
.NET の場合、InterSystems IRIS は、Managed Provider および ADO.NET との 2 要素認証を使用した接続をサポートします。2 要素認証のサポートは、以下のように tcp_conn クラスのメソッドを 2 つ使用します。
-
bool IRISConnection.isTwoFactorEnabledOpen()
このメソッドは、InterSystems IRIS サーバへの接続を開き、2 要素認証がこの接続で有効になっているかどうかを確認します。このメソッドはブーリアン値を返します。true は、2 要素認証が有効であることを意味します。
-
void IRISConnection.sendTwoFactorToken(token)
このメソッドは、1 回限りのセキュリティ・トークンをサーバに提供します。返り値はありません。このメソッドは 1 つの引数 token をとります。これは、ユーザが受信した 1 回限りのセキュリティ・トークンです。トークンの問題 (有効でないなど) と接続の問題のいずれかがある場合、このメソッドは例外をスローします。
クライアント・アプリケーションは、IRISConnection.Open を呼び出す代わりに isTwoFactorEnabledOpen を呼び出します。isTwoFactorEnabledOpen メソッドは、続けて sendTwoFactorToken を呼び出す必要があります。
また、2 要素認証がサーバで有効になっていて、クライアント・コードが 2 要素認証呼び出しを実装していない場合、サーバはクライアントとの接続を切断します。
以下の例では、conn という接続のインスタンスを使用します。
-
この例では、このインスタンスのメソッドを使用して、2 要素認証が有効になっているかどうか確認します。
-
この例では、サーバにトークンを提供しようとし、これに失敗するとエラー処理が行われます。
// Given a connection called "conn"
try {
if (conn.isTwoFactorEnabledOpen()) {
// Prompt the user for the two-factor authentication token.
// Store the token in the "token" variable.
conn.sendTwoFactorToken(token);
}
}
catch (Exception ex) {
// Process exception
}
ODBC
ODBC では、2 要素認証のサポートは、ODBC の標準的な関数呼び出しを 2 つ使用します ("Microsoft ODBC API リファレンスOpens in a new tab" を参照)。
-
SQLRETURN rc = SQLGetConnectAttr(conn, 1002, &attr, sizeof(attr), &stringLengthPtr);
Microsoft ODBC API の一部である SQLGetConnectAttrOpens in a new tab 関数は、指定された接続属性の現在値を返します。InterSystems ODBC クライアントは、この関数を使用して、サーバが 2 要素認証をサポートしているかどうかを判定します。最初の引数の値は、クライアントからサーバへの接続のハンドルです。2 つ目の引数の値は、1002 で、これは 2 要素認証がサポートされているかどうかを指定する ODBC 属性です。これ以降の引数の値は、属性 1002 の値を含む文字列および関係のある変数のサイズ用です。
-
SQLRETURN rc = SQLSetConnectAttr(conn, 1002, securityToken, SQL_NTS);
同じく Microsoft ODBC API の一部である SQLSetConnectAttrOpens in a new tab 関数は、指定された接続属性の値を設定します。InterSystems ODBC クライアントは、この関数を使用して、2 要素認証トークンの値をサーバに送信します。4 つの引数の値は、それぞれ以下のとおりです。
-
クライアントからサーバへの接続。
-
1002。2 要素認証がサポートされているかどうかを指定する ODBC 属性です。
-
1 回限りのセキュリティ・トークンの値。
-
SQLNTS。1 回限りのセキュリティ・トークンが文字列に格納されていることを示します。
-
2 要素認証がサーバで有効になっていて、クライアント・コードが 2 要素認証呼び出しを実装していない場合、サーバはクライアントとの接続を切断します。
以下の例では、conn という接続のインスタンスを使用します。
-
この例では、SQLGetConnectAttr を使用して、2 要素認証が有効になっているかどうか確認します。
-
この例では、SQLSetConnectAttr 呼び出しによってサーバにトークンを提供しようとし、これに失敗するとエラー処理が行われます。SQLSetConnectAttr が失敗すると、サーバは接続を切断します。そのため、再び認証を行うには、その前に接続を再確立する必要があります。
// Given a connection called "conn"
SQLINTEGER stringLengthPtr;
SQLINTEGER attr;
SQLRETURN rc = SQLGetConnectAttr(conn, 1002, &attr, sizeof(attr), &stringLengthPtr);
if attr {
// Prompt the user for the two-factor authentication token.
wstring token;
SQLRETURN rc = SQLSetConnectAttr(conn, 1002, token, SQL_NTS);
if !rc {
// Process the error from a invalid authentication token.
}
}