1

Active Directory / Windows 統合認証の使用は当然のことです。開発の観点から、これを使用する最良の方法は何ですか?

構成によるものですか?

<location path="SecurePage.aspx">
    <system.web>
        <authorization>
            <allow roles="MyDomain\My Secure Users" />
            <deny users="*" />
        </authorization>
    </system.web>
</location>

コード経由ですか?

User.IsInRole(@"MyDomain\My Secure Users");

これをデータベースに保存することは良い考えですか? 新しいユーザー/グループの付与は、カスタム アプリケーションを介して行うことができますか? (これが現状なので、私はこれを尋ねます。)この考えの何が問題なのですか?

4

3 に答える 3

1

両方を使用できない理由はありません。web.config を介して行うのは、非常に簡単で効果的です。ただし、常に役割レベルで操作してください。コード バージョンは、構成が不十分な場合や、UI の特定の部分を表示/非表示にする場合に使用します (これにはコントロール バージョンもあります)。

更新 1:ロールのサポートは既にあるので、データベースは実際にロールを機能にマップすることになっていると思います。Asp.net の組み込みサポートとそれがサポートする拡張ポイントは、役割レベルにあります。本当に完全に動的にする必要がある場合は、コード レベルでチェックを行う必要があります (.config はロールで動作します)。これは余分な労力の問題であり、システムのサイズに大きく依存します。ほとんどの場合、ロールに固執するだけで十分です。

于 2009-03-03T17:52:20.667 に答える
1

個人的には、宣言型アプローチ (ロケーションベースの web.config アプローチ) を好みます。これにより、コードの再デプロイを必要とせずに、必要に応じて変更を加えることが容易になります。

あなたの例のように、静的文字列で User.IsInRole() を呼び出すことは決してお勧めしません。認証が変更されない場合は、web.config 宣言型アプローチを使用します。

最後の段落で提案したルートに進むことはまったく問題ありませんが、認証情報が頻繁に変更される可能性が高い状況、つまり CMS アプリケーションまたは同様の同類の場合にのみお勧めします。

要するに、この件に関する「ベストプラクティス」はないと思います。それは本当にアプリケーションに依存します。

于 2009-03-03T17:52:56.827 に答える
0

あまり変わらない場合は、web.config を使用してください。

大幅に変更する場合は、コード メソッドを使用しますが、データベースを使用して簡単に変更できるようにします。

セキュリティに関連するというよりは、コーディング プラクティスに対する一般的な回答です。

于 2009-03-03T17:41:51.800 に答える