プログラムによる構成項目の作成方法
管理ポータルを使用して OAuth 2.0 のクライアント、リソース・サーバ、承認サーバを構成する方法については他の記事で説明しています。これらの構成をプログラムで作成することもできます。以下のサブセクションでは、クライアント (リソース・サーバを含む) と承認サーバの作成方法について詳しく説明します。
プログラムによるクライアント構成項目の作成方法
OAuth 2.0 クライアントまたは OAuth 2.0 リソース・サーバの構成項目をプログラムで作成するには、以下の手順を実行します。
サーバ記述の作成
サーバ記述は、OAuth2.ServerDefinitionOpens in a new tab のインスタンスです。サーバ記述を作成するには次の手順に従います。
-
%SYS ネームスペースに切り替えます。
-
承認サーバが Discovery をサポートする場合は、%SYS.OAuth2.RegistrationOpens in a new tab の Discover() メソッドを呼び出します。このメソッドは、以下のとおりです。
ClassMethod Discover(issuerEndpoint As %String, sslConfiguration As %String, Output server As OAuth2.ServerDefinition) As %Status
引数は以下のとおりです。
-
issuerEndpoint は、承認サーバの識別に使用するエンドポイントの URL を指定します。
-
sslConfiguration は、Discover() メソッドの呼び出しに使用する InterSystems IRIS SSL/TLS 構成のエイリアスを指定します。
-
出力として返される server は、OAuth2.ServerDefinitionOpens in a new tab のインスタンスです。
-
-
次に、返された OAuth2.ServerDefinitionOpens in a new tab インスタンスを保存します。
また、承認サーバが Discovery をサポートしない場合、次の手順を実行します。
-
%SYS ネームスペースに切り替えます。
-
OAuth2.ServerDefinitionOpens in a new tab のインスタンスを作成します。
-
インスタンスのプロパティを設定します。ほとんどの場合、プロパティの名前は管理ポータルに表示されるラベルと一致します (スペースと大文字化を除く)。詳細は、"サーバ記述の手動による作成" を参照してください。これらのプロパティは、以下のとおりです。
-
IssuerEndpoint
-
SSLConfiguration
-
InitialAccessToken。[登録アクセス・トークン] フィールドに対応します。
-
Metadata。OAuth2.Server.Metadata のインスタンスで、多くのプロパティが含まれます。OpenID Provider Metadata (https://openid.net/specs/openid-connect-discovery-1_0.htmlOpens in a new tab) を参照してください。
ServerCredentials の詳細は、"証明書と JWT (JSON Web Token)" の "OAuth 2.0 承認サーバの証明書の使用" を参照してください。
-
-
インスタンスを保存します。
クライアント構成の生成
クライアント構成は、OAuth2.ClientOpens in a new tab のインスタンスです。クライアント構成を作成するには、次の手順を実行します。
-
%SYS ネームスペースに切り替えます。
-
OAuth2.ClientOpens in a new tab のインスタンスを作成します。
-
インスタンスのプロパティを設定します。ほとんどの場合、プロパティの名前は管理ポータルに表示されるラベルと一致します (スペースと大文字化を除く)。詳細は、"クライアントの構成および動的な登録" を参照してください。これらのプロパティは、以下のとおりです。
-
ApplicationName
-
ClientId。クライアントを動的に登録する場合、手動で設定する必要はありません。
-
ClientSecret。クライアントを動的に登録する場合、手動で設定する必要はありません。
-
DefaultScope
-
Description
-
Enabled
-
JWTInterval
-
Metadata。OAuth2.Client.Metadata のインスタンスで、多くのプロパティが含まれます。詳細は、Client Metadata (http://openid.net/specs/openid-connect-registration-1_0-19.htmlOpens in a new tab) を参照してください。
-
RedirectionEndpoint。[応答を受信するために承認サーバに対して指定されるクライアント URL] オプションに対応します。このプロパティのタイプは %OAuth2.Endpoint です。OAuth2.EndpointOpens in a new tab クラスは、UseSSL、Host、Port、Prefix のプロパティを持つシリアル・クラスです。
-
SSLConfiguration
-
ServerDefinition。以前に作成した OAuth2.ServerDefinitionOpens in a new tab のインスタンスであることが必要です。
ClientCredentials の詳細は、"証明書と JWT (JSON Web Token)" の "OAuth 2.0 クライアントの証明書の使用" を参照してください。
-
-
承認サーバがダイナミック・クライアント登録をサポートする場合は、%SYS.OAuth2.RegistrationOpens in a new tab の RegisterClient() メソッドを呼び出します。このメソッドは、以下のとおりです。
ClassMethod RegisterClient(applicationName As %String) As %Status
applicationName はクライアント・アプリケーションの名前です。
このメソッドはクライアントを登録し、(クライアント ID およびクライアント秘密鍵を含む) クライアント・メタデータを取得した後、OAuth2.ClientOpens in a new tab のインスタンスを更新します。
プログラムによるサーバ構成項目の作成方法
OAuth 2.0 承認サーバの構成項目をプログラムで作成するには、以下の手順を実行します。
-
承認サーバ構成を作成します。
1 つの InterSystems IRIS インスタンス上に複数の承認サーバ構成を定義できないことに注意してください。また、この構成を作成するには、%Admin_Secure リソースの USE 権限を持つユーザとしてログインする必要があります。
-
関連付けられたクライアント記述を作成します。
承認サーバ構成の作成
認証サーバ構成は、OAuth2.Server.ConfigurationOpens in a new tab のインスタンスです。承認サーバ構成を作成するには、次の手順を実行します。
-
%SYS ネームスペースに切り替えます。
-
OAuth2.Server.ConfigurationOpens in a new tab のインスタンスを作成します。
-
インスタンスのプロパティを設定します。 ほとんどの場合、プロパティの名前は管理ポータルに表示されるラベルと一致します (スペースと大文字化を除く)。詳細は、"承認サーバの構成" を参照してください。これらのプロパティは、以下のとおりです。
-
AccessTokenInterval
-
AllowUnsupportedScope
-
AudRequired。[対象者は必須] オプションに対応します
-
AuthenticateClass
-
AuthorizationCodeInterval
-
ClientSecretInterval
-
CustomizationNamespace
-
CustomizationRoles
-
DefaultScope
-
Description
-
EncryptionAlgorithm
-
GenerateTokenClass
-
IssuerEndpoint。[発行者エンドポイント] オプションに対応します。OAuth2.EndpointOpens in a new tab タイプです。OAuth2.EndpointOpens in a new tab クラスは、UseSSL、Host、Port、Prefix のプロパティを持つシリアル・クラスです。
-
JWKSFromCredentials
-
KeyAlgorithm
-
Metadata。OAuth2.Server.Metadata のインスタンスで、多くのプロパティが含まれます。OpenID Provider Metadata (https://openid.net/specs/openid-connect-discovery-1_0.htmlOpens in a new tab) を参照してください。
-
RefreshTokenInterval
-
ReturnRefreshToken
-
SSLConfiguration
-
SessionClass
-
SessionInterval。[セッション終了間隔] オプションに対応します
-
SigningAlgorithm
-
SupportSession。[ユーザ・セッションのサポート] オプションに対応します
-
SupportedScopes。[スコープ] と [説明] の列を持つテーブルに対応します。このプロパティは文字列の配列であるため、SetAt()、GetAt() などの通常の配列インタフェースを使用します。
-
ValidateUserClass
署名、キー管理、暗号化のアルゴリズムに使用できる値については、%OAuth2.JWTOpens in a new tab のクラス・リファレンスを参照してください。
ServerCredentials および ServerPassword の詳細は、"証明書と JWT (JSON Web Token)" の "OAuth 2.0 承認サーバの証明書の使用" を参照してください。
-
-
OAuth2.Server.Configuration.Save() メソッドを使用してインスタンスを保存します。%Save() メソッドではなく Save() メソッドを使用する必要があります。このメソッドには、Web アプリケーションの作成などの追加の機能が用意されているからです。
InterSystems IRIS では、このクラスの複数インスタンスの使用はサポートされていません。
また、このインスタンスを保存するには、%Admin_Secure リソースの USE 権限を持つユーザとしてログインする必要があります。
クライアント記述の作成
クライアント記述は、OAuth2.Server.ClientOpens in a new tab のインスタンスです。クライアント記述を作成するには、次の手順を実行します。
-
%SYS ネームスペースに切り替えます。
-
OAuth2.Server.ClientOpens in a new tab のインスタンスを作成します。
-
インスタンスのプロパティを設定します。 ほとんどの場合、プロパティの名前は管理ポータルに表示されるラベルと一致します (スペースと大文字化を除く)。詳細は、"クライアント記述の作成" を参照してください。これらのプロパティは、以下のとおりです。
-
ClientCredentials
-
ClientType
-
DefaultScope
-
Description
-
LaunchURL
-
Metadata。OAuth2.Client.Metadata のインスタンスで、多くのプロパティが含まれます。詳細は、Client Metadata (http://openid.net/specs/openid-connect-registration-1_0-19.htmlOpens in a new tab) を参照してください。
-
Name
-
RedirectURL。[リダイレクト URL] オプションに対応します。このプロパティは文字列の配列であるため、SetAt()、GetAt() などの通常の配列インタフェースを使用します。
-
-
インスタンスを保存します。
システムは、ClientId および ClientSecret プロパティの値を生成します。