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?

DirectLogin() の実装

OAuth 2.0 承認サーバとして Caché を使用するときは、通常、認証クラスDisplayLogin() メソッドを実装します。このメソッドは、ユーザがユーザ名とパスワードを入力してログインするページを表示します。サーバによる認証時にログイン・フォームの表示と現在のセッションの使用を避ける場合は、認証クラスDirectLogin() メソッドを実装します。以下のフローチャートは、Caché 承認サーバがアクセス・トークンの要求を処理するときにユーザを識別する仕組みを示しています。

generated description: identify-user

既定では、GetUser() メソッドは、前のログインで入力されたユーザ名を取得します。

DirectLogin() を実装すると、DisplayPermissions() は呼び出されません。DirectLogin() は許可を表示する役割を果たすからです。

DirectLogin() メソッドには、以下のシグニチャがあります。

ClassMethod DirectLogin(scope As %ArrayOfDataTypes, 
                        properties As %OAuth2.Server.Properties, 
                        Output username As %String, 
                        Output password As %String) As %Status

以下はその説明です。

  • scope は、元のクライアント要求に含まれるスコープを含む %ArrayOfDataTypesOpens in a new tab のインスタンスです。このスコープは、BeforeAuthenticate() メソッドによって変更されている可能性があります。配列キーはスコープ値であり、配列値はスコープ値の対応する表示形式です。

  • properties は、承認サーバが受信し、処理の早い段階にメソッドが変更したプロパティとクレームを含む %OAuth2.Server.PropertiesOpens in a new tab のインスタンスです。“%OAuth2.Server.Properties オブジェクトの詳細” を参照してください。

  • 出力として返される username はユーザ名です。

  • 出力として返される password は対応するパスワードです。

実装では、独自のロジックを使用して username および password 引数を設定します。そのためには、必要に応じて scope および properties 引数を使用します。アクセスを拒否するには、メソッドで username 引数を $char(0) に設定します。この場合、承認サーバは access_denied のエラーを返します。

メソッドで properties のプロパティを設定することもできます。このオブジェクトは後続の処理で利用できます。

このメソッドは %StatusOpens in a new tab を返す必要があります。

FeedbackOpens in a new tab