|
Permify は、個人のアプリケーションやサービスに対してきめ細かなライセンスを作成および維持するためのオープンソース ライセンス サービスです。 Permify は、認可データをユーザーが指定するデータベース(Write Database と呼びます)に変換します。このデータベースは、認可システムの一元化されたデータソースとして機能します。Permify の DSL(Permify Schema)を使用して認可をモデル化し、保存されたリレーショナルタプルに基づいて、スタック内のどこからでも単一の API 呼び出しでアクセスチェックを実行できます。 Permify の最適な使用例:
特性
例次に、Permify のオープンソース RBAC ソリューションである React Roles を使用して、React アプリケーションに RBAC を実装する方法を紹介します。 React Roles はコンポーネント、フック、ヘルパー メソッドで構成されており、バックエンド接続なしでユーザー ロールと権限を制御できるため、アクセス管理においてさまざまな利点が得られます。 ここでは、React Roles の基本を紹介し、ユーザー、ユーザー ロール、およびユーザー権限のモックを定義および設定する CRM のようなアプリケーションの開発を試みます。 ステップ1: Reactプロジェクトを作成するターミナルまたはコマンドプロンプトで次のコマンドを実行して、新しい React プロジェクトを作成します。 アプリケーションを作成したら、ファイルを消去してプロジェクトを再開できます。完了すると、フォルダ構造、App.js、index.js ファイルは次のようになります。 App.js ファイルの内容を以下に示します。 関数App (){ index.js ファイルの内容は次のとおりです。 「react」 からReactをインポートします。 ステップ2: UIインターフェースここでは、React初心者向けに多くのコンポーネントを提供するAnt Designライブラリを使用しました。プロジェクトでAnt Designを使用するには、まずプロジェクトフォルダで以下のコマンドを実行してインストールしてください。 このアプリケーションには、ログインページとホームページという2つの異なるページがあります。ユーザーはログインページでメールアドレスを入力することでアプリケーションにログインできるため、入力されたメールアドレス情報に基づいてユーザーのロールと権限を取得します。 ホームページには、連絡先情報を入力するフォームと2つのアクションボタンを配置します(下図参照)。赤いボタンはログアウト用、紫色のボタンは連絡先を作成するためのものです。ただし、連絡先作成ボタンは特定のユーザーのみに制限します。 ステップ3: ユーザーを作成するこのアプリケーションでは、管理者、編集者、エージェントという3つの異なるユーザーロールが存在します。これらのルールに基づいて、「連絡先を作成」ボタンへのアクセスを制限します。「連絡先を作成」ボタンは、管理者または編集者のロールを持つユーザーのみに表示され、利用できるようにします。 このボタンはエージェントロールに再度制限されます。ただし、ロールに加えて、ユーザー権限に基づいてこれらのボタンへのアクセス権限も確認する必要があります。ユーザーに連絡先作成権限がある場合は、ロールに関係なくこのボタンへのアクセスを許可します。 ここでは、以下に示すようにいくつかのサンプルユーザーを作成します。 [ ステップ4: Reactロールを追加するサンプルユーザーを作成したら、ユーザーのロールと権限に基づいたアクセス管理を設定するために、React Roleライブラリをインストールする必要があります。React Roleをインストールするには、プロジェクトフォルダで以下のコマンドを実行してください。 React Role をインストールした後、PermifyProvider コンポーネントを使用してアクセス チェックを制御するすべての構造を App.js ファイルでラップする必要があります。 さらに、App.js ファイルでは、ログイン ページで localStorage に保存したユーザー情報をチェックして、システムにログインしたユーザーを確認し、それをプロパティとしてホーム ページに送信します。 ... ホームページでは、ユーザーが管理者、編集者、または連絡先作成権限を持っている場合、「連絡先を作成」ボタンが表示されるようにする必要があります。ユーザーの役割と権限を制御するには、React RolesライブラリのHasAccessコンポーネントを使用する必要があります。 HasAccess コンポーネントは、3 つの異なるプロパティを使用して、ユーザーが特定の要素にアクセスできるかどうかを確認します。
... ソースコードの可読性と理解度を高めるため、一部のコードは省略しています。これには、テーブルに偽のデータを表示するためのリクエストや、独自の設定が含まれます。完全なソースコードをご覧になりたい場合は、GitHubリポジトリ(https://github.com/erenolgun/react-role-demo)をご覧ください。 ステップ5: テストこれでアプリケーションをテストできます。まず、メールアドレスが[email protected]で管理者権限を持つLouise Walkerとしてログインします。そのため、Louiseには「連絡先を作成」ボタンが表示されます。 次に、プロキシロールを持つGreg Howellとしてログインします。彼のロールでは、renderAuthFilledプロパティが{null}に設定されているため、「連絡先を作成」ボタンは表示されません。 最後に、プロキシとしてLeonard Wadeとしてログインしてみましょう。ただし、彼には連絡先作成権限も付与されています。通常、プロキシの役割のため、Leonardには「連絡先を作成」ボタンは表示されません。しかし、連絡先作成権限により、権限属性がcontact-createに設定されているため、連絡先作成ボタンにアクセスできます。 この時点で、ユーザーのIDと権限の確認が完了しました。Permify の使用方法の詳細については、公式ドキュメント(https://docs.permify.co/)をご覧ください。
|