RAD サーバー エンジンの権限付与

提供: RAD Studio
移動先: 案内検索

RAD サーバー エンジン(EMS サーバー) への移動


RAD サーバー エンジンの権限付与により、HTTP 要求での RAD サーバー リソースまたは特定の RAD サーバー エンドポイントへのアクセスを許可または拒否することができます。 権限付与は、RAD サーバー エンジン(EMS サーバー)への HTTP 要求で使用される資格情報によって決まります。

デフォルトでは、RAD リソースおよび RAD エンドポイントは公開されています。

RAD サーバー では次の 3 種類の異なる資格情報があります。

  • マスタ秘密鍵。この資格情報を使用すると、お使いの RAD サーバー エンジン(EMS サーバー)の任意の RAD サーバー リソース内の任意の RAD サーバー エンドポイントに HTTP 要求でアクセスできます。
  • ユーザー。この資格情報では特定の RAD サーバー ユーザーを識別します。 エンドポイントやリソースへのアクセスは、そのユーザーまたはそのユーザーの所属先グループに許可されたものに限られます。
  • アプリケーション秘密鍵。この資格情報では、すべての HTTP 要求に許可されているエンドポイントにアクセスできます。

RAD サーバーの権限付与で使用される資格情報

RAD サーバー秘密鍵による認証

RAD サーバー マスタ秘密鍵MasterSecret)の場合は、RAD サーバー データベースに格納されているすべての EMS データに完全にアクセスできる権限が付与されます。

この RAD サーバー秘密鍵は、管理タスクで使用します。RAD サーバー秘密鍵 を使用すると、RAD サーバー エンジン(EMS サーバー)内のすべての RAD サーバー リソースにアクセスできます。

マスタ秘密鍵の変更は、RAD サーバー エンジン構成ファイルで行います。

RAD サーバー アプリケーション秘密鍵による認証

RAD サーバー アプリケーション秘密鍵(AppSecret)の場合は、RAD サーバー クライアント アプリケーションから許可されたエンドポイントにアクセスできる権限が付与されます。

アプリケーション秘密鍵の変更は、RAD サーバー エンジン構成ファイルで行います。

RAD Server アクセス ルール

アクセス ルールを作成して、特定の RAD サーバー リソースまたは RAD サーバー リソース エンドポイントに関する権限付与を構成することができます。

RAD サーバー 管理 API リソース(たとえば RAD サーバー ユーザーRAD サーバー グループなど)またはカスタム RAD サーバー リソースの新しいアクセス ルールを設定できます。

メモ: RAD サーバー エンジンでは、マスタ秘密鍵による認証 を使用して、RAD サーバー リソース へのアクセスを制御している場合は、RAD サーバー構成ファイルに設定されたアクセス ルールは無視されます。

次のものに対するアクセス ルールおよび設定を(JSON 文字列として)指定できます。

  • リソース。リソース設定は、その RAD サーバー リソース内のすべてのエンドポイントに適用されます。
  • 特定のエンドポイント。 エンドポイント設定は、リソースの設定より優先されます。

RAD サーバー リソースまたは RAD サーバー リソース エンドポイントの下記の JSON 属性を変更できます。

JSON 属性 説明
{"public": true} あらゆる要求に権限を付与します。
{"public": false} RAD サーバー クライアント アプリケーションは、RAD サーバー ユーザーまたは RAD サーバー グループによっては、権限を付与される場合があります。
{"users": ["username1", "username2"]} フィールド usernameRAD サーバー ユーザーを認証します。
{"users": ["userid1", "userid2"]} フィールド useridRAD サーバー ユーザーを認証します。
{"users": ["*"]} あらゆる RAD サーバー ユーザーを認証します。
{"groups": ["groupname1", "groupname2"]} RAD サーバー グループに属するあらゆる RAD サーバー ユーザーを認証します。
{"groups": ["*"]} あらゆるRAD サーバー グループのあらゆる RAD サーバー ユーザーを認証します。

次のサンプルでは、LoginUserSignupUser の RAD サーバー エンドポイントを除く、リソース Users のすべてのメソッドを非公開にしています。

 Users={"public": false}
 Users.LoginUser={"public": true}
 Users.SignupUser={"public": true}

次のs何プルでは、カスタム RAD サーバー リソース Resource1 のすべてのメソッドを、グループ group1 内のすべての RAD サーバー ユーザーに公開しています。

 Resource1={"groups": ["group1"]}

アクセス ルールの作成と変更は、RAD サーバー エンジン構成ファイルで行います。

RAD サーバー エンジン ウィンドウ内のログに、作成されたアクセス ルールが(RegACL エントリとして)表示されます。

EMSServerLog RegACL.png

RAD サーバー ユーザー認証

認証オプションによって、次のヘッダー パラメータを使用します:

RAD サーバー秘密鍵による認証

X-Embarcadero-Master-Secret=<value>

RAD サーバー アプリケーション秘密鍵による認証

X-Embarcadero-App-Secret=<value>

RAD サーバー ユーザー認証

X-Embarcadero-Session-Token=<value>
X-Embarcadero-App-Secret=<value>

X-Embarcadero-App-Secret は省略可能です。 X-Embarcadero-Session-Token を取得するには、クライアント アプリケーションは "users/login" エンドポイントを、次で説明されているように使用しなければなりません:

  1. クライアントが、ログイン要求をします:
    POST http://localhost:8080/users/login HTTP/1.1 {"username":"User1","password":"User1pass"}
  2. サーバーが応答します:
    HTTP/1.1 201 Created {"username":"User1","_id":"04C3B621-A056-49CF-8C56-D18E8363F58E","_meta":{"creator":"04C3B621-A056-49CF-8C56-D18E8363F58E","created":"2018-05-04T09:05:54.000Z"},"sessionToken":"d7bdc5523d04ecab7a35c1df53a7077d","sessionTokenExpiry":"2023-10-02T11:41:03.281Z"}
    メモ: セッション トークンのライフタイムは、次の emsserver.ini ファイルのパラメータで制御できます: SessionInactivityTimeoutSessionLiveTimeout。詳細については次を参照してください:「RAD サーバー エンジンの制限
  3. クライアントが、エンドポイントを呼び出します:
    GET http://localhost:8080/test HTTP/1.1 X-Embarcadero-Session-Token: d7bdc5523d04ecab7a35c1df53a7077d
  4. サーバーが応答します:
    HTTP/1.1 200 OK "test"
  5. サーバー ログに、ユーザーが 2 つめの要求で識別されたことが示されます:
    {"Request":{"Resource":"Users","Endpoint":"LoginUser","Method":"POST","User":"(blank)","Time":"04.05.2018 13:12:51","Thread":3568}} {"Request":{"Resource":"test","Endpoint":"Get","Method":"GET","User":"04C3B621-A056-49CF-8C56-D18E8363F58E","Time":"04.05.2018 13:12:55","Thread":3568}}

RAD サーバー リソースおよびエンドポイントへのアクセスの制御

リソースやエンドポイントへのアクセスを制御する方法は、RAD サーバー ユーザーによる方法と EMS クライアント アプリケーションによる方法の 2 通りあります。

RAD サーバー エンジン構成ファイルの編集

RAD サーバー エンジン構成ファイル(emsserver.ini ファイルを使用して、リソースおよびエンドポイント別に権限付与を構成できます。

マスタ秘密鍵、または、アプリケーション秘密鍵設定するか、RAD サーバー リソースおよびエンドポイントアクセス ルールを新規作成します。

メモ: emsserver.ini ファイルでこれらの値を変更する場合は、RAD サーバー エンジンを停止して 構成パラメータを再読み込みする必要があります。 EMSDevServer.exe を終了させ再起動して、emsserver.ini ファイルを再読み込みする必要があります。

プログラムによる制御

新しい拡張 RAD サーバー エンジンを作成し、特定の RAD エンドポイントへのアクセスを防ぐコードを追加することができます。 コードでは、特定の RAD サーバー ユーザーまたは特定の RAD サーバー グループの RAD サーバー ユーザーから送信された要求かどうかを確認します。

要求内で特定された RAD サーバー ユーザーが問題のエンドポイントにアクセスできない場合は、カスタム リソースで例外を発生させて、権限のない要求であることを示す必要があります。

関連項目