セッション権限を検査してデバッグを容易に

データへのアクセスをフィルタリングする強力な機能は、アプリケーションへの悪意あるアクセスを防ぐために不可欠です。

この機能は、データに対する特定のアクションを許可する権限を利用します。これらの権限は、ロールの形でユーザーに割り当てられ、認証時にSession オブジェクトに保存されます。

4D 20 R6 ではこの機能を強化され、セッション内の権限を検査できるようになりました。

詳細はこちらをご覧ください。

HDI: セッションの権限確認

Sessionオブジェクトの新しい getPrivileges() 関数

例題を見てみましょう。

roles.jsonファイルには、次の設定がされています:

まず、simple 権限があります。

medium 権限があり、simple 権限を含みます。

Medium ロールには、medium 権限が割り当てられています。

{
 "privileges": [
  {
   "privilege": "simple",
   "includes": []
  },
  {
   "privilege": "medium",
   "includes": [
     "simple"
    ]
  }
 ],
 "roles": [
  {
   "role": "Medium",
   "privileges": [
    "medium"
   ]
  }
 ],
 "permissions": {
  "allowed": [] // 許可されたアクションはここで設定します
 }
}

DataStoreクラスには、authentify() 関数が定義されており、指定されたロールの権限を Session に割り当てます。

exposed Function authentify($role : Text) : Text
	
	Session.clearPrivileges()
	Session.setPrivileges({roles: $role})
	
	return "Authentication done with "+$role

DataStoreクラスには、getPrivileges() 関数も実装されています。この関数は、Session の権限を返します。

exposed Function getPrivileges() : Collection
	return Session.getPrivileges()

Medium ロールを指定して authentify() 関数が呼び出された場合、getPrivileges() 関数は次を返します:

[
"simple",
"medium"
]

新しい /$info/privileges RESt API

セッションの権限を取得するための新しい REST API も追加されました。上記の例で /$info/privileges を呼び出すと、以下を返します:

{
 "privileges": [
  {
  "privilege": "simple"
  },
  {
  "privilege": "medium"
  }
 ]
}

これはデバッグを容易にします。詳しくはドキュメントを参照ください。

Avatar
- プロダクトオーナー - Marie-Sophie Landrieu-Yvertは、2017年にプロダクトオーナーとして4Dプロダクトチームに参加しました。プロダクトオーナーとして、彼女はユーザーストーリー(ユーザーが期待する新機能とその使用法)を書き、それを具体的な機能仕様に変換する役割を担っています。また彼女の役割は、実装された機能が顧客のニーズを満たしているかどうかを確認することでもあります。彼女は1995年にESIGELEC Engineering Schoolを卒業し、IBMでエンジニアとしてのキャリアをスタートさせました。様々なプロジェクト(保守や新規のプロジェクト)に参加し、Cobolのデベロッパーとして働きました。その後、UMLデザイナーおよびJavaデベロッパーとして勤務。最近は、機能要件の分析・記述、ビジネスチームと開発チームの調整などを主に担当しています。