Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

代行認証の使用法

Caché は、ユーザ定義の認証メカニズムの使用をサポートしています。このメカニズムを、代行認証といいます。管理者は、代行認証により、Caché セキュリティの一部である認証とロール管理の動作に代わるカスタムのメカニズムを導入できます。

この章では、以下の項目について説明します。

代行認証の概要

代行認証を使用するには、以下の手順を実行します。

  1. ZAUTHENTICATE ルーチンで、ユーザ定義の認証コードを作成します。これには、2 要素認証を使用できます。このルーチンは、ロールや他のユーザ・プロパティの指定など、ユーザ・アカウントの基本的な設定も実行することができます。

  2. [認証オプション] ページで、Caché インスタンスに対して代行認証を有効にします

  3. 必要に応じて、関連するサービスアプリケーション、またはその両方に対して代行認証を有効にします。

  4. オプションとして、Caché インスタンスおよび必要に応じて Web アプリケーションとクライアント/サーバ・アプリケーションの 2 要素認証を有効化します。

例えば、インスタンスの管理ポータルで代行認証を使用するには、以下の手順を実行します。

  1. ZAUTHENTICATE で、ユーザ定義の認証コードを作成します。

  2. Caché インスタンス全体の代行認証を有効にします。

  3. /csp/sys* アプリケーションのセットの代行認証を有効にします。

代行認証の動作

ユーザがログインを試行して、Caché が代行認証を呼び出す場合、イベントのシーケンスは以下のようになります。

  1. サービスまたはアプリケーションが代行認証を使用する場合、ログイン試行によって ZAUTHENTICATE ルーチンが自動的に呼び出されます。このルーチンの認証コードは、任意のユーザ定義の ObjectScript、クラス・メソッド、または $ZF コールアウト・コードにできます。

  2. 次に行う手順は、認証が成功するかどうか、および今回が ZAUTHENTICATE を使用した最初のログインであるかどうかによって異なります。

    • ZAUTHENTICATE が成功し、今回がこのメカニズムを使用した初めてのユーザ認証である場合、そのユーザはタイプ“代行ユーザ” として Caché ユーザのリストに追加されます。ZAUTHENTICATE によってロールまたは他の特性が設定されると、そのロールまたは特性がそのユーザのプロパティの一部になります。

    • ZAUTHENTICATE が成功し、今回が最初のログインでない場合、ZAUTHENTICATE によってそのユーザのプロパティが更新されます。

    • ZAUTHENTICATE が失敗すると、アクセス拒否のエラーが表示されます。ユーザはシステムにアクセスできません。この原因を調べる手順は次のとおりです。

      1. ユーザ・プロファイル[ログイン失敗の理由] フィールドの内容をチェックします。

      2. さらに、監査ログで %System/%Login/LoginFailure イベントをチェックして、詳細な情報を確認します。監査や LoginFailure イベントが有効になっていない場合は、これらを両方とも有効にしてログイン失敗の状況を再現する必要がある場合があります。

  3. インスタンスと関連サービスの 2 要素認証が有効な場合は、ユーザの PhoneNumber および PhoneProvider プロパティが設定されていることが確認されます。これらのプロパティが設定されている場合は、2 要素認証が実行されます。これらのプロパティが設定されていない場合は、2 要素認証に進むことはできず、ユーザは認証されません。

  4. [ユーザ] ページ ([システム管理] > [セキュリティ] > [ユーザ]) で、ユーザ・リストの [タイプ] 列に代行ユーザとしてユーザが表示されます。管理ポータルに表示されるユーザのプロパティは読み取り専用です。Caché から編集することはできません (これらの情報はすべて Caché の外部から取得されるため)。

    Note:

    Caché パスワード・ユーザが、同時に代行ユーザになることはできません。

代行 (ユーザ定義) 認証コードの作成

このセクションでは、ユーザ専用の ZAUTHENTICATE ルーチン作成のさまざまな側面について説明します。

認証コードの基礎

管理ユーティリティ・ソース・コードがインストールされているインスタンスでは、ルーチン ZAUTHENTICATE.mac の SAMPLES ネームスペースで、システムが提供する ZAUTHENTICATE のテンプレートを使用できます。管理ユーティリティ・ソース・コードをインストールするには、インストール・ウィザードの [セットアップ・タイプ] ページでカスタム・インストールの一部としてこのオプションを選択します。

独自の ZAUTHENTICATE.mac を作成するには、以下の手順を実行します。

  1. ZAUTHENTICATE.mac をテンプレートとして使用するには、その内容を %SYS ネームスペースの ZAUTHENTICATE.mac ルーチンにコピーして保存します。

  2. ZAUTHENTICATE のシステムが提供するコードでコメントを確認します。そこには、カスタム版のルーチンを実装する方法に関する重要なガイダンスが記載されています。

  3. ユーザ・アカウントの特性を設定するには、カスタム認証コードと必要なコードを追加してルーチンを編集します。

Caution:

Caché では ZAUTHENTICATE の認証コードに対する制約を行わないため、アプリケーション・プログラマは、コードが十分に安全であるかどうかを確認する必要があります。

シグニチャ

ZAUTHENTICATE のシグニチャは以下のとおりです。

ZAUTHENTICATE(ServiceName, Namespace, Username, Password, Credentials, 
        Properties) PUBLIC {

    // authentication code
    // optional code to specify user account properties and roles
}

各項目の内容は次のとおりです。

  • ServiceName — ユーザから Caché への接続を仲介しているサービスの名前を表す文字列 (%Service_Console%Service_CSP など)。

  • Namespace — 目的とする接続先の Caché サーバにあるネームスペースを表す文字列。これは、スタジオや ODBC など、%Service_Bindings サービスで使用します。

  • Username — ルーチンのコードによって検証されるユーザが入力したアカウントの名前を表す文字列。

  • Password — 検証されるユーザが入力したパスワードを表す文字列。

  • Credentials参照渡し。このバージョンの Caché では、実装されていません。

  • Properties参照渡しUsername で指定したアカウントの特性を定義する返り値の配列。

Caché が ZAUTHENTICATE を呼び出すと、これらの引数の値がルーチンに提供されます。

認証コード

認証コードのコンテンツはアプリケーションに固有です。認証が成功すると、ルーチンから $$$OK マクロが返されます。失敗した場合はエラー・コードが返されます。返り値の詳細は、“返り値とエラー・メッセージ” を参照してください。

Caution:

Caché では ZAUTHENTICATE の認証コードに対する制約を行わないため、アプリケーション・プログラマは、コードが十分に安全であるかどうかを確認する必要があります。

GetCredentials エントリ・ポイント

ZAUTHENTICATEGetCredentials エントリ・ポイントを含んでいます。 エントリ・ポイントは代行認証がサービスに対して有効となるたびに、ユーザ名およびパスワードの入力が要求される前に呼び出されます。ユーザからユーザ名およびパスワードを得る代わりに、(アプリケーション開発者が作成した) 関数のコードがユーザ名およびパスワードを指定します。その後、返されたユーザ名およびパスワードは、ユーザが入力したかのように通常の方法にて認証されます。このメカニズムを使用することで、ユーザ名およびパスワードをエントリ・ポイント内さらには認証コード内で、プロセスの $roles に対して提供することができます。

このエントリ・ポイントより返されるユーザ名とパスワードは、アプリケーション開発者が選択する任意のメカニズムにより取得できます。これらは、グローバル、外部の DLL、または LDAP 呼び出しから取得することも、または単純にルーチン内で設定することもできます。さらに、アプリケーション開発者はターミナル接続やカスタム CSP ログイン・ページでの、ユーザ名およびパスワード要求を行うコードを提供することもできます。

エントリ・ポイントがエラー・ステータスを返した場合、エラーが監査ログに記録され、ユーザはシステムへのアクセスを拒否されます。これには一つ例外があり、エラー・ステータス $SYSTEM.Status.Error($$$GetCredentialsFailed) が返された場合には、通常のユーザ名とパスワード要求に移ります。

GetCredentials エントリ・ポイントの以下の例では、コードは各種サービスに対してさまざまな動作を実行します。

  • %Service_Console では、ユーザに情報を要求せずに、プロセスのユーザ名とパスワードをそれぞれ _SYSTEM および SYS に設定します。

  • %Service_Bindings では、ユーザにユーザ名とパスワードの入力を強制します。

  • Web アプリケーションでは、使用中のアプリケーションが /csp/ サンプル・アプリケーションであるかをチェックします。そうである場合は、ユーザ名とパスワードを AdminUser および Test へ設定します。他の Web アプリケーションである場合は、アクセスはすべて拒否されます。

  • その他のどのサービスの場合も、アクセスは拒否されます。

最後に、Error エントリ・ポイントは必要に応じてクリーンアップを行います。

このコードは以下のとおりです。

GetCredentials(ServiceName,Namespace,Username,Password,Credentials) Public {

  // For console sessions, authenticate as _SYSTEM.
  If ServiceName="%Service_Console" {
    Set Username="_SYSTEM"
    Set Password="SYS"
    Quit $SYSTEM.Status.OK()
  }

  // For the CSP samples application, authenticate as AdminUser.
  If $isobject($get(%request)) { 
    If %request.Application="/csp/samples/" {
      Set Username="AdminUser"
      Set Password="Test"
      Quit $System.Status.OK()
    }
  }

  // For bindings connections, use regular prompting.
  If ServiceName="%Service_Bindings" {
    Quit $SYSTEM.Status.Error($$$GetCredentialsFailed)
  }

  // For all other connections, deny access.
  Quit $SYSTEM.Status.Error($$$AccessDenied)
}

詳細は、ZAUTHENTICATE.mac の、このエントリ・ポイントのコメントを参照してください。

SendTwoFactorToken エントリ・ポイント

ZAUTHENTICATESendTwoFactorToken エントリ・ポイントを含んでいます。このエントリ・ポイントは 2 要素認証と共に使用します。これが定義されており、Caché インスタンスで 2 要素認証が有効な場合は、インスタンスがユーザの携帯電話に送信するメッセージおよびトークン形式の既定のシステム設定をオーバーライドできます。これによって、同じ Caché インスタンス上でもアプリケーションごとに異なるメッセージを使用できます。

このエントリ・ポイントの詳細と使用例は、サンプル ZAUTHENTICATE.mac でこのエントリ・ポイントを参照してください。

ロールと他のユーザ特性の値の設定

最初の認証が成功すると、ZAUTHENTICATE は認証されたユーザのロールと他の特性を確立できます。以降のログインでは、ユーザ・レコードのこれらの要素を更新できます。

これを行うために、ZAUTHENTICATE のコードにより Properties 配列の値が設定されます (Properties は、ZAUTHENTICATE への参照によって渡されます)。通常、設定する値のソースは、ZAUTHENTICATE が使用できるユーザ情報のリポジトリです。

ユーザのプロパティ

Properties 配列の要素は以下のとおりです。

  • Properties("Comment") — 任意のテキスト

  • Properties("FullName") — ユーザの名前と姓

  • Properties("NameSpace") — ターミナル・ログインの既定のネームスペース

  • Properties("Roles") — ユーザが Caché で保持するコンマ区切りのロール・リスト

  • Properties("Routine") — ターミナル・ログインに対して実行されるルーチン

  • Properties("Password") — ユーザのパスワード

  • Properties("Username") — ユーザのユーザ名

  • Properties("PhoneNumber") — ユーザの携帯電話番号で、2 要素認証で使用

  • Properties("PhoneProvider") — ユーザの携帯電話のサービス・プロバイダで、2 要素認証で使用

各要素については、この後のセクションでそれぞれ詳しく説明します。

Note:

プロパティの配列の各要素の値によって、それぞれの要素に関連する、認証対象のユーザのプロパティ値が設定されます。これらのプロパティのサブセットのみを使用したり、認証後にプロパティ値を操作したりすることはできません。

Comment

ZAUTHENTICATEProperties("Comment")の値を設定すると、その文字列が Caché におけるユーザ・アカウントの Comment プロパティの値になります(このプロパティの詳細は、“ユーザ” の章の “ユーザのプロパティ” で説明しています)。呼び出し元のルーチンに値が渡されない場合、ユーザ・アカウントの Comment の値は NULL 文字列になり、管理ポータルの関連フィールドにはコンテンツが表示されません。

FullName

ZAUTHENTICATEProperties("FullName")の値を設定すると、その文字列が Caché におけるユーザ・アカウントの Full name プロパティの値になります(このプロパティの詳細は、“ユーザ” の章の “ユーザのプロパティ” で説明しています)。呼び出し元のルーチンに値が渡されない場合、ユーザ・アカウントの Full name の値は NULL 文字列になり、管理ポータルの関連フィールドにはコンテンツが表示されません。

Namespace

ZAUTHENTICATEProperties("Namespace")の値を設定すると、その文字列が Caché におけるユーザ・アカウントの Startup Namespace プロパティの値になります(このプロパティの詳細は、“ユーザ” の章の “ユーザのプロパティ” で説明しています)。呼び出し元のルーチンに値が渡されない場合、ユーザ・アカウントの Startup Namespace の値は NULL 文字列になり、管理ポータルの関連フィールドにはコンテンツが表示されません。

Caché に接続すると、Startup Namespace の値 (Properties("Namespace") の値) は、ローカル・アクセス (コンソール、ターミナル、または Telnet など) に認証されたユーザの最初のネームスペースを決定します。Startup Namespace に値が指定されない場合 (Properties("Namespace") に値が指定されないため)、ローカル・アクセスに認証されたユーザの最初のネームスペースは以下のように決定されます。

  1. USER ネームスペースが存在する場合、これが最初のネームスペースになります。

  2. USER ネームスペースが存在しない場合、最初のネームスペースは %SYS ネームスペースになります。

Note:

ユーザが最初のネームスペースに対する適切な特権を保持していない場合、アクセスは拒否されます。

Password

ZAUTHENTICATEProperties("Password")の値を設定すると、その文字列が Caché におけるユーザ・アカウントの Password プロパティの値になります(このプロパティの詳細は、“ユーザ” の章の “ユーザのプロパティ” で説明しています)。呼び出し元のルーチンに値が渡されない場合、ユーザ・アカウントの Password の値は NULL 文字列になり、管理ポータルの関連フィールドにはコンテンツが表示されません。

Roles

ZAUTHENTICATEProperties("Roles") の値を設定すると、その文字列によってユーザの割り当て先の Roles が指定されます。この値はコンマ区切りのロール・リストを含む文字列です。呼び出し元のルーチンに値が渡されない場合、ユーザ・アカウントの Roles の値は NULL 文字列になり、管理ポータルの関連フィールドにはコンテンツが表示されません。ユーザのロールに関する情報は、[ユーザ編集] ページの [ロール] タブで確認できます。

Properties("Roles") で返されるロールが定義されない場合、ユーザはロールに割り当てられません。

したがって、ログインしたユーザは以下のようにロールに割り当てられます。

  • ロールが Properties("Roles") に示され、Caché インスタンスで定義される場合、ユーザはそのロールに割り当てられます。

  • ロールが Properties("Roles") に示され、Caché インスタンスで定義されない場合、ユーザはそのロールに割り当てられません。

  • ユーザは、_PUBLIC ユーザに関連付けられたロールには常に割り当てられます。また、すべてのパブリック・リソースにアクセスできます。_PUBLIC ユーザの詳細は、“ユーザ” の章の “_PUBLIC アカウント” を参照してください。パブリック・リソースの詳細は、“リソース” の章の “サービスとそのリソース” を参照してください。

Routine

ZAUTHENTICATEProperties("Routine")の値を設定すると、その文字列が Caché におけるユーザ・アカウントの Startup Tag^Routine プロパティの値になります(このプロパティの詳細は、“ユーザ” の章の “ユーザのプロパティ” で説明しています)。呼び出し元のルーチンに値が渡されない場合、ユーザ・アカウントの Startup Tag^Routine の値は NULL 文字列になり、管理ポータルの関連フィールドにはコンテンツが表示されません。

Properties("Routine") に値がある場合、この値によって、ターミナル・タイプのサービス (コンソール、ターミナル、Telnet など) でログイン後に自動的に実行するルーチンが指定されます。Properties("Routine") に値を指定しない場合、ログインはプログラマ・モードでターミナル・セッションを開始します。

Username

ユーザ名のプロパティがこの関数で返される場合、そのユーザ名は Caché データベースに書き込まれます。これにより、ユーザは、ユーザ名プロンプトでユーザが入力した内容を正規化できます。正規化したユーザ名はケースごとにのみ異なるものでなければなりません。Username プロパティが呼び出し元のルーチンに渡されない場合、ユーザ名のプロンプトでユーザが入力するユーザ名が、Caché セキュリティ・データベースに書き込むユーザ名として使用されます (つまり、正規化されません)。

ZAUTHENTICATEProperties("Username")の値を設定すると、その文字列が Caché におけるユーザ・アカウントの Name プロパティの値になります(このプロパティの詳細は、“ユーザ” の章の “ユーザのプロパティ” で説明しています)。これにより、アプリケーション・プログラマは、ログイン・プロンプトでエンド・ユーザが入力した内容を正規化できます。

Properties("Username") の値を呼び出し元のルーチンに渡す明示的な呼び出しがない場合、正規化は行われず、プロンプトでエンド・ユーザが入力する値が、変更されずに、そのユーザ・アカウントの Name プロパティの値としてそのまま使用されます。

PhoneNumber と PhoneProvider

これらは 2 要素認証と関連付けられたプロパティです。

ZAUTHENTICATEProperties("PhoneNumber")Properties("PhoneProvider") の値を設定すると、これらはユーザの携帯電話番号および携帯電話サービス・プロバイダとしてユーザの Caché データベースに書き込まれます。これらが呼び出しルーチンに渡されない場合、Cache セキュリティ・データベースに書き込まれた電話番号とサービス・プロバイダは NULL 文字列です。したがって、代行認証で 2 要素認証を使用するには、これらの両方を提供する必要があります。

ユーザ情報のリポジトリ

ZAUTHENTICATE は、グローバルや外部ファイルなど、ユーザ情報のリポジトリであればどのような種類でも参照できます。認証されたユーザをこの情報で作成または更新できるように、ルーチンのコードによって Properties 配列で外部プロパティを設定します。例えば、あるリポジトリにロールやネームスペースなどの情報が含まれる一方で、ZAUTHENTICATE コードは Caché がその情報を利用できるようにする必要があります。

リポジトリ内の情報が変更されると、このアクションを実行するコードが ZAUTHENTICATE にある場合、この情報は Caché ユーザ情報に伝播されます。また、このようなコードがある場合、リポジトリでユーザのロールが変更されなければなりません。セッション中にユーザのロールを変更した場合、その変更は次のログインまで有効になりません。次のログインの時点で、そのユーザのロールは ZAUTHENTICATE によってリセットされます。

返り値とエラー・メッセージ

ルーチンは以下のいずれかの値を返します。

  • 成功 — $$$OK。ユーザ名とパスワードの組み合わせが正常に認証されたことを示します。

  • 失敗 — $SYSTEM.Status.Error($$$ERRORMESSAGE)。認証が失敗したことを示します。

ZAUTHENTICATE は、システム定義またはアプリケーション固有のエラー・メッセージを返すことができます。これらのメッセージはすべて、%SYSTEM.StatusOpens in a new tab クラスの Error メソッドを使用します。このメソッドは、$SYSTEM.Status.Error として呼び出され、エラーの状況に応じて、1 つまたは 2 つの引数を取ります。

使用可能なシステム定義のエラー・メッセージは以下のとおりです。

  • $SYSTEM.Status.Error($$$AccessDenied) — “アクセスが拒否されました” のエラー・メッセージ

  • $SYSTEM.Status.Error($$$InvalidUsernameOrPassword) — “ユーザ名またはパスワードが無効です” のエラー・メッセージ

  • $SYSTEM.Status.Error($$$UserNotAuthorizedOnSystem,Username) — “ユーザ Username は許可されていません” のエラー・メッセージ

  • $SYSTEM.Status.Error($$$UserAccountIsDisabled,Username) — “ユーザ Username アカウントが無効です” のエラー・メッセージ

  • $SYSTEM.Status.Error($$$UserInvalidUsernameOrPassword,Username) — “ユーザ Username の名前またはパスワードは無効です” のエラー・メッセージ

  • $SYSTEM.Status.Error($$$UserLoginTimeout) — “ログインタイムアウト” のエラー・メッセージ

  • $SYSTEM.Status.Error($$$UserCTRLC) — “ログインは中止されました” のエラー・メッセージ

  • $SYSTEM.Status.Error($$$UserDoesNotExist,Username) — “ユーザ Username は存在しません” のエラー・メッセージ

  • $SYSTEM.Status.Error($$$UserInvalid,Username) — “ユーザ名 Username が無効です” のエラー・メッセージ

  • $SYSTEM.Status.Error($$$PasswordChangeRequired) — “パスワードの変更が必要です” のエラー・メッセージ

  • $SYSTEM.Status.Error($$$UserAccountIsExpired,Username) — “ユーザ Username のアカウントは失効しました” のエラー・メッセージ

  • $SYSTEM.Status.Error($$$UserAccountIsInactive,Username) — “ユーザ Username のアカウントはアクティブではありません” のエラー・メッセージ

  • $SYSTEM.Status.Error($$$UserInvalidPassword) — “無効なパスワードです” のエラー・メッセージ

  • $SYSTEM.Status.Error($$$ServiceDisabled,ServiceName) — “サービス Servicename のログインは無効です” のエラー・メッセージ

  • $SYSTEM.Status.Error($$$ServiceLoginsDisabled) — “ログインは無効です” のエラー・メッセージ

  • $SYSTEM.Status.Error($$$ServiceNotAuthorized,ServiceName) — “ユーザはサービスで認証されていません” のエラー・メッセージ

カスタム・メッセージを生成するには、$SYSTEM.Status.Error() メソッドを使用して、このメソッドに $$$GeneralError マクロを渡し、2 番目の引数として任意のカスタム・テキストを指定します。例えば以下のようになります。

$SYSTEM.Status.Error($$$GeneralError,"Any text here")

エラー・メッセージが呼び出し元に返されると、そのメッセージは監査データベース (LoginFailure イベント監査が有効な場合) にログとして記録されます。表示されるエラー・メッセージは $SYSTEM.Status.Error($$$AccessDenied) のみです。ただし、$$$PasswordChangeRequired エラーのメッセージも表示されます。現在のパスワードから新しいパスワードへの変更をユーザに要求する場合、このエラーを返します。

代行認証の設定

認証 (および、オプションで承認タスク) を実行する ZAUTHENTICATE ルーチンを作成したら、次に、インスタンスの関連サービスまたはアプリケーションでそのルーチンを有効にします。手順は以下のとおりです。

  1. インスタンス全体の代行認証を有効にします。[認証/CSP セッションオプション] ページ ([システム管理] > [セキュリティ] > [システム・セキュリティ] > [認証/CSP セッションオプション]) で、[代行認証を許可] を選択して、[保存] をクリックします。

    インスタンスで代行認証を有効にすると、関連サービスの [サービス編集] ページと、関連アプリケーションの [ウェブ・アプリケーション編集] ページに [代行] チェック・ボックスが表示されます。

  2. 必要に応じて、サービスとアプリケーションの代行認証を有効にします。

以下のサービスは認証代行をサポートしています。

  • %Service_Bindings

  • %Service_CSP

  • %Service_CacheDirect

  • %Service_CallIn

  • %Service_ComPort

  • %Service_Console

  • %Service_Login

  • %Service_Terminal

  • %Service_Telnet

これらのサービスは、アクセス・モードによっていくつかのカテゴリに分類されます。

  • ローカル・アクセス

    %Service_CallIn%Service_ComPort%Service_Console%Service_Login%Service_Terminal%Service_Telnet

    ローカル接続で代行認証を使用するには、サービスの代行認証を有効にします。

  • クライアント・サーバ・アクセス

    %Service_Bindings%Service_CacheDirect

    クライアント・サーバ接続で代行認証を使用するには、サービスの代行認証を有効にします。

  • CSP アクセス

    %Service_CSP

    Web ベースの接続で代行認証を (CSP または Zen により) 使用するには、Web アプリケーションの LDAP 認証を有効にします。また、サービス %Service_CSP を有効にすることで、CSP ゲートウェイでこれを有効にできます。

代行認証成功後の注意事項

ユーザが認証された後の重要な項目は以下のとおりです。

システムの状態

代行認証を使用して最初に認証されるユーザは、“代行ユーザ” というタイプで [ユーザ] ページ ([システム管理] > [セキュリティ] > [ユーザ]) のユーザ・テーブルに表示されます。システム管理者が管理ポータル (またはその他の Caché のネイティブ機能) を使用して明示的にユーザを作成した場合、そのユーザのタイプは “Caché パスワード・ユーザ” になります。ユーザが代行認証を使用してログインを試行し、認証が正常に行われる場合でも、そのユーザが既に (代行ユーザではなく) Caché ユーザとして存在することを Caché が検出すると、ログインは失敗します。

パスワードの変更

ZAUTHENTICATE ルーチンには、エントリ・ポイント ChangePassword も含まれており、そこにはユーザのパスワードを変更するコードが含まれています。このエントリ・ポイントのシグニチャは以下のとおりです。

ChangePassword(Username,NewPassword,OldPassword,Status) Public {}

各項目の内容は次のとおりです。

  • Username は、パスワードを変更するユーザを指定する文字列です。

  • NewPassword は、ユーザのパスワードの新しい値を指定する文字列です。

  • OldPassword は、ユーザのパスワードの古い値を指定する文字列です。

  • Status (参照によって渡される) は、パスワード変更が成功したことを示すか、またはルーチンの失敗の原因となったエラーを指定する Caché の状態を示す値を受信します。

FeedbackOpens in a new tab