問題タブ [principalpermission]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - SecurityManager.IsGranted() の動作
次のC#の動作を説明してもらえますか?私は CAS について学ぶためだけに小さなコンソール アプリケーションを作成しましたが、次のコード行がそのように機能する理由を理解できないようです。
どちらの SecurityManager.IsGranted() 呼び出しでも、出力は「true」です。
次に、次の行を追加するとします。
最初のデマンド コールはパスしますが、2 番目のデマンド コールは (予想どおり) SecurityException を引き起こします。
SecurityManager.IsGranted() 呼び出しが「roleX」権限に対して false を返さないのはなぜですか?
wcf - WCFとPrincipalPermission
NT Authority \ SystemのセキュリティコンテキストでWindowsサービスとして実行されるサービスがいくつかあります(サービスはNetTCPベースです)。Active Directoryには、次のサービスへのアクセスを許可される6つのグループが格納されています。
ユーザーエージェント承認者管理者(3つのレベルの管理者)
ServiceSecurityContext.Current.WindowsIdentity.Nameを使用してサービスに接続しているユーザーを取得できることはわかっています。
私がする必要があるのは、渡されたユーザーコンテキストが特定のサービスにアクセスできることをビジネスレイヤーで検証することです。また、プリンシパルパーミッションを使用して役割を渡して使用する、会社がサポートする古いアプリケーションに従うようにします。アクセスを確保するためのDemand()メソッド。
私の最初の質問は、PrincipalPermissionにServiceSecurityContextユーザー名と関連するロール(グループ)を渡すと、サービスが同じドメインのADアカウントのコンテキストで実行されているため、バックグラウンドでActive Directoryにアクセスすることを自動的に認識しますか?それとも私がすべき特別なことはありますか?
c# - Active Directory と PrincipalPermission
これは助けを求めるというより好奇心ですが、私は PrincipalPermission を使用し、ユーザーが Active Directory の特定のグループの一部であることを確認するときに、実際のグループ名を使用せず、代わりに Windows 2000 以前のグループに対して検証することに気付きました。代わりに名前を付けます。通常、これは違いはありません - 誰かがたまたまこれらの値を変えない限り。
.Net API が「本当の」名前の代わりにそのグループ名を使用する理由を考えられる人はいますか? これにより、私は何時間もの悲しみと、最終的にすべてを理解するための少しの盲目的な運を引き起こしました.
wcf - UI への WCF ロールベース セキュリティのフロー
次のシナリオを処理する方法に関するいくつかのベスト プラクティスを探しています - WCF サービス レイヤーから UI へのアクセス許可のフロー:
PrincipalPermission 属性で装飾されたメソッドを含む WCF サービスがあります。メソッドを呼び出す前に、クライアントが必要なアクセス許可を持っているかどうかを確認できるようにする手段が必要です。
この基本的な例は、ユーザーが特定の機能 (注文の送信など) を実行できるかどうかを確認することであり、UI 内のボタンを有効/無効にするために使用できます。
可能なオプションは、サービスのような「おしゃべりな」操作を追加するか、代わりにプロパティを持つメッセージを返すbool CanSubmitOrder()
単一のメソッドを使用することです ? 次に、「Submit Order」ボタンの有効状態を結果に設定できます。OrderServicePermissions GetPermissions()
CanSubmitOrder
それで、より良いアプローチ、またはベストプラクティスさえ知っている人はいますか?
前もって感謝します!
asp.net - System.Security.SecurityException - ロール名を取得する
このようにglobal.asaxにすべてのセキュリティ例外をキャッチする方法を実装しました...
ユーザーのアクセス許可から欠落していた役割の名前を示す、アクセスできるプロパティはありますか? すなわち。err.RoleThatFailed?
ありがとうございます
ETFエアファックス。
.net - WCF サービスによって取得された発信者 ID (ネットワーク サービス アカウント) が古くなっています
Windows サービスでホストされている、TCP バインディングを使用する WCF サービスがあります。WCF サービスは、ASP.NET Web アプリケーションによって呼び出されます。
WCF サービスが呼び出されたときに、呼び出し元の ID が特定のローカル グループのメンバーであるかどうかを確認したいと思います。これを行ういくつかの方法は次のとおりです。
ASP.NET Web アプリケーションが Windows 2003/IIS6 でホストされている場合、NETWORK SERVICE アカウントで実行されます。つまり、WCF コードを正しく実行するには、ネットワーク サービスをローカル グループに追加する必要があります。ただし、アカウントをグループに追加してアプリケーションをテストすると (上記の方法のいずれかを使用してグループ メンバーシップをテストします)、コードは NETWORK SERVICE がグループのメンバーではないと見なしているようです。
同じグループ メンバーシップ テストを実行する単純な ASP.NET ページを作成しました。iisresetを実行した後、Web ページは NETWORK SERVICE がグループに参加したことだけを認識することがわかりました。ただし、IIS をリセットしても、WCF サービスに違いはありません。WCF サービスをホストしている Windows サービスを再起動してみましたが、違いはありませんでした。NETWORK SERVICE がグループのメンバーであることを WCF コードが認識したのは、コンピューターを再起動した 1 回だけでした。
単純な ASP.NET ページと WCF サービスの動作に違いがある理由を理解しようとしています。特に、同じコードを使用していて、両方が同じ ID 名 (NT AUTHORITY\NETWORK SERVICE) を報告している場合にそうです。誰か知っていますか?
この問題は、Windows 2008 (Web アプリケーションも NETWORK SERVICE で実行されている) または Windows 2008 R2 (アプリケーション プール ID アカウントとして実行されている) では発生しません。
助けてくれてありがとう!
c# - きめ細かいパーミッション。PrincipalPermission - パーミッションとは別のロール。
私は wcf サービスでしばらく PrincipalPermission を使用しています。[PrincipalPermission(SecurityAction.Demand, Role = SecurityRoles.CanManageUsers)]
私たちの役割には接頭辞 Can* が付いており、組み込みの asp.net メンバーシップ システムを使用してきめ細かいアクション コントロールを実現する方法です。
これにより、ビジネス ユニットとして、ユーザーにどのような細かい役割を与えることができるかを知ることが難しくなります。
これが私の新しいアプローチであり、私の提案を実装する前に、誰かがフィードバックやコードレビューを提供できるかどうかを確認したかった.
1) aspnet_roles - ビジネス ユニットの役割
2) 権限テーブルと Role_Permission テーブルと User_Permission テーブル (多対多) を作成して、asp.net メンバーシップ システムを拡張します。
3) 新しいテーブルを参照するカスタム CodeAccessSecurityAttribute + を作成します [CustomPermissionCheck(Security.Demand, HasPermission="can*")] 最初の反復では、依存リポジトリを静的に新しくします。 IPermissionRepository.HasPermission(...);
私が新しい aop の方法にアプローチする場合、おそらく CodeAccessSecurityAttribute からの継承をやめるでしょう - セキュリティ担当者はこれについて何を言わなければなりませんか?
他の誰かがこれを解決しましたか、私が見逃したフレームワークに何かありますか?
silverlight-4.0 - Silverlight4ページとPrincipalPermission
VS2010を使用して、MVVMデザインパターンを使用したSilverlight4ビジネスアプリケーションについて学習しています。
SL4ビュー(Page、UserControl、ChildWindowのいずれか)を宣言的に保護する方法を理解しようとしています。
ASP.NET 2.0 Webアプリケーションで、自分のWebページにPrincipalPermission属性を配置できた可能性があることを思い出します。
例:
System.Securityへの参照を設定することさえできないため、「SL4」プロジェクトではそれを行うことができないようです。
私のグーグル検索は、WCFメソッド呼び出しの保護に関する結果を返し続けます。これはセキュリティの別のレイヤーとしては問題ありません。ただし、SLビュー自体にも宣言型セキュリティを適用したいと思います。
誰かアイデアはありますか?(私はSL開発に不慣れであることを忘れないでください)
ありがとうSheir
.net - System.Environment.MachineName の値が大文字なのはなぜですか?
私のマシン名は小文字です (システムの詳細設定ダイアログの [コンピュータ名] タブで確認できます) がSystem.Environment.MachineName
、大文字で報告されます。何故ですか?私のテストでは、ロール名の大文字と小文字を区別して比較するため、これは私にとって本当の問題ですPrincipalPermissionAttribute
(私はカスタム ロールを Windows グループにマップし、私の環境は非ドメインです)。何かアドバイスはありますか?
asp.net - DeclaractivePrincipalPermissionをProgrammatic.Demandに変換する
私は現在、このような2つの役割を担っています。
[PrincipalPermission(SecurityAction.Demand、Role = "Domain \ Admin")] [PrincipalPermission(SecurityAction.Demand、Role = "Domain \ AnotherRole")]
問題は、この継承されたコードがドメインに固有であり、最終的にweb.configファイルからロールを取得したいので、ドメインにないVMで作業できることです。
私はこのような例を見ました:
ユーザーがロールに属していない場合、これは例外をスローするため、この例を変更して2つのロールのいずれかを許可するにはどうすればよいですか?複数のIPrincipal.IsInRole()を使用してから独自の例外をスローすることもできますが、複数のロールで.Demandメソッドを使用する方法があるようです。
アップデート12/21:以下のLadislavの回答からのUnionリンクに基づくサンプルコード:
しかし、AzMan(Ladislavによって提案されたものはより良いがより複雑な解決策のように見えます)。