2011-10-26 12 views
7

Apexには「ワークスペース」があり、3種類のユーザーを作成することができます。これらのすべてが、本質的に組織の内部にあります。また、Apexの個々のサイトの開発者が自分のサイトだけで「ユーザー」を持つ方法はないようです。Oracle Apexの認可とユーザーの役割は?

何か不足していますか?

サイトの一部の機能にアクセスするには、外部(ビジネス)ユーザーがいる必要があります。たとえば、アカウンティングはページAとBのみを表示し、エグゼクティブはA、B、およびC.

アクセスの度合いが異なる複数のグループの人々を持つ能力が必要です。

これは、ワークスペース/グループを作成することによってのみ行うことができますか?それとも、自分のサイトで内部的に行うことができますか?

答えて

7

APEXには「グループ」というユーザー管理の概念が組み込まれていますが、私はそれを一度も使用していないと告白する必要があります。また、ドキュメントをすばやく調べても、こちらについてはTom's answerを参照してください)。

データベース内にユーザー/ロール表を作成し、これらをAPEX認可スキームと組み合わせて使用​​して、ページへのアクセスを制御する必要があります。タイプ「ブール返すPL/SQL関数」の単一認可スキームは、関数本体で作成することができます

return my_auth_pkg.is_authorized (p_user => :app_user, 
            p_app_id => :app_id 
            p_page_id => :app_page_id); 

あなたは、ユーザーの権限をルックアップするためにパッケージを実装し、ためにTRUEまたはFALSEを返すかどうかを決定しますアプリケーションとページID。 enter image description here

代わりにあなただけの認可スキームに直接アクセスをチェックするためにSQLを実行できます(NB「user_roles」 enter image description here

をし、「role_pagesは」私はあなたテーブルを表現するために、構成された名前であります)

+0

上記のコードはどこに正確に入りますか? – antonpug

+0

APEX認可スキームの作成時に、それを「Function Body」プロパティーに入力します。 –

+0

ああ申し訳ありません。だから私は、私のdbテーブルに適切な情報が含まれているかどうかを確認するチェックを作成する場所ですか? – antonpug

6

私はちょうどTony's answerに展開したいと思います。私はちょうどあなたに別の方法を示したいと思います。私は初心者のほうが簡単で、テーブルの作成は省略します。

アプリケーションが認証方式としてApexを使用する場合、ユーザーはワークスペース自体の管理によって管理されます。ユーザーを作成、編集、削除できますが、グループを定義してユーザーをグループにリンクすることもできます。いくつかの「エンドユーザー」タイプのユーザーを作成し、「役員」のような2つのグループを定義することは可能です。

Apex users and groups Creation of a group あなたのグループを作成したら、あなたはこのグループを割り当てたいユーザーに行き、そしてあなたがいることをしたら、そのユーザー

Adding a group to a user

のグループにグループを追加設定するには、引き続き認証スキームが必要です。実際にはここでいくつかのpl/sqlの知識が必要ですが、いくつか便利なapi-workのおかげで、コーディングを最小限に抑えることができます。 Defining an authorization based on apex groups current_user_in_groupは、グループに割り当てられていると言いますと、現在のユーザーをチェックします。いくつかの簡単なIF構造を使用して拡張することで、少し増やすことができます!

私は完全にこの方法をお勧めしませんが、私はちょっと面倒ですが、実際にユーザーとそのグループを維持するためにAPEXに入る人が必要ですが、これはあなたの環境で受け入れられるかもしれません。しかし、それを使って始めることができます。認証スキームを簡単に切り替えることができます。また、新しい認証スキームに準拠するように認可スキームを変更することで、後で簡単かつ迅速に調整することができます。もちろん、あなたの優先順位や目標にもよります。

+1

+1素晴らしい、今私は組み込みのグループを使用する方法を知っている!私は応答する前にapex_utilのドキュメントを見ていましたが、その機能を見ることができませんでした。ちょうど観察:式1のあなたのコードは単純に減らすことができます。 'return apex_util.current_user_in_group(p_group_name => 'エグゼクティブ'); ' –

+0

私はここであなたの答えを実装しました。それは確かにアクセスを制限するのに有効です。実際、私はもうログインページにアクセスできません。どうすれば修正できますか?私は、ページレベルではなく、アプリケーションレベルで認証スキームを適用したことに注意してください。アプリレベルで承認を無効にして、実際にアクセスして各ページへのアクセスを個別に制限する必要がありますか? – TraxusIV

+1

@ TraxusIVうわー、遅い応答にごめんなさい!私はこれがあなたの頂点バージョンに結びつくかもしれないと思うし、頂点のそれ以降のバージョンはもうこれをしてはいけません(私は信じています)。 4.2以上である可能性があります。それ以外の場合は、直接割り当てる必要があります。しかし、あなたはこれを比較的簡単に行うことができます。ユーティリティ>すべてのページの右サイドバーのグリッド編集でクロスページユーティリティを選択します。すべてのページについて、簡単に承認スキームを変更することができます。保存することを忘れないでください! :) – Tom

0

認可は、認証された/特定された人物がリソースへのアクセスまたは操作を許可されているかどうかを判断するプロセスです。これは、ユーザーに割り当てられた権限またはロールのセットに基づいています。たとえば、Oracleデータベースでは、管理者はジョブをスケジュールする権限を持ちますが、ユーザーは権限を持っていません。 認可と認証との違いは何ですか? 多くの場合、認証と承認は一緒に機能します。つまり、認可は認証に従います。 認証であなたは誰ですか? 承認はあなたが何をすることができるかを決定します。

関連する問題