次の要件を考慮して、独自の認証/認可システムを導入したいと思うのは間違っていますか?
-
13-09-2019 - |
質問
私のペット プロジェクトでは、次の要件を持つユーザー システムを用意したいと考えています。
- 連携する必要があります Db4o 永続化モデルとして
- DIを使いたい(による) タービン) 必要な依存関係をユーザー モデルに提供するため
- asp.net-mvc に簡単にプラグインできる必要があります
- あまり手間をかけずにテストできる必要がある
- SO と同じように匿名ユーザーをサポートする必要がある
- 認証と認可を分離したい (最初のものは 2 番目のものがなくても機能します)
- 安全でなければなりません
ここでは機能よりもいくつかのテクノロジーを優先していることは承知していますが、これはペット プロジェクトであり、いくつかの新しいことを学びたいので、それらを要件として含めるのが合理的だと思います。
自分自身のロールを途中で、おそらく私はいくつかの苦しみを抱えていることに気づきました NIH(アメリカ国立衛生研究所) 症候群。
私は asp.net の既存のユーザー フレームワークが不必要に複雑であることがあまり好きではないので、実際に私に疑問を抱かせているのは、セキュリティに関するより複雑な要素だけです。続けて自分自身をロールアウトすることは擁護可能でしょうか?そうでない場合、既存の IPrinciple ベースのフレームワークを使用して上記の要件をすべて満たすにはどうすればよいでしょうか?
解決
それはあなたがあなた自身のカスタム.NETメンバシッププロバイダをロールされて何をしたいかのように私に聞こえるます。
それはあなたのプロバイダの内部実装を完全に制御を与えている間、あなたのコントローラのアクションに組み込みのASP.NET認証<ストライキ> /認証ストライキ>属性<ストライキ> S 打つ>を使用できるようになります(これはあなたが上記の要件を満たすために、それをコーディングすることができます)。
MSDNからの直接...
メンバーシッププロバイダーを実装する
他のヒント
私はあなたの配慮が薄い部分がどこにあるか、あなたが認識だと思う:私は決してだろう。すなわち、その中であなたは、あなたがそれとNIH(面白いをやっている理由で動機としてやっているものを行う方法を用意しましたその前に)問題が見られます。
はさておき、それらを置く、あなたのプロバイダは、あなたが潜在的に再利用できるようなもので、それはあなたの今後の取り組みの一部を単純化することができます。また、問題をさらに慣れるのに役立つはずです。限り、あなたがする必要がある(そして、あなたのツールを使用していない場合は、あなたがやっているかわからないような専門されていない)場合は、あまりにもそれで作業できるように、ASP.NETフレームワークを理解し、その後Iあなたはすでにあなたの防衛を作り上げてきたと信じています。
DOKが述べたように、あなたは他の機能があるものは何でも手に大きなタスクを避けるために、ここにあなた自身をロールしていないことに注意が必要です。これは気晴らしも聞かせてはいけない:それはあなたのアプリケーションが本当に必要なものでなければなりません。そうでない場合は、私が代わりにあなたのソフトウェアの中核的使命に焦点を当てた方に傾くと思います。
、あなたはそれがあるとあなたが望むどの機能いかに難しいかの良いアイデアを持っています。これは、将来のプロジェクトのための既製のソリューションを評価するのに役立ちます。
大藤、過ごす時間が既に容易に利用可能な機能を開発することは、あなたのプロジェクトの主要な機能に取り組んでその時間を過ごすことがないことを意味します。認証と承認は、プロジェクトの主要な構成要素でない限り、あなたは別の領域に、あなたの時間を投資して、あなたの知識を拡大することを検討してください。
私はあまりにもASP.net MVCとのdb4oを使用してペットのプロジェクトに取り組んでおりますが、少なくともではないだけでそのルートを下って行く:)でいるので、同じことをやっています。永続化層は、フィールドレベルで特に承認(つまり、私は人Aの最初の名前ではなく、人Bの最初の名前を見ることができています)ということであるように私の最大の理由の一つは、あなたがしている場合達成するためにかかわらず、であるdb4oので遊んで開始します複雑なSQL文と貧血のドメインモデルに強制的に。
私はdb4oのとSolrのインデックスの両方に永続化(および同期化)するために必要な複雑な認証のニーズを持っていたので、私は自分自身を展開する上で作業を始めたが、私は前もって知っていたという理由だけで、それは私のペットの重要な機能の一つでした私は100%の制御を超えるたかっプロジェクトます。
今、私はまだ認証用の.NETのメンバシッププロバイダを使用してではなく、(単に)オブジェクトの認可のためにしかし、私は私の承認は自分を使用して必要POC'dた後だけかもしれません。