Web API (サービス) - MVC (クライアント) アーキテクチャ プロジェクトの認証/承認シナリオを実装する際に、アプローチを決定するのに苦労しています。Web APIプロジェクトでカスタムトークンベースの認証を実装しましたが、認証を正確にどこに実装する必要があるか(クライアントまたはAPI自体)が難しいと感じています。
アーキテクチャの概要:
- プロジェクト ソリューション -
|
| | __ ASP.NET Web API ベースの REST サービス (M/C 1 の IIS で独立してホスト)
|
| | __ ASP.NET MVC ベースのクライアント (M/C 2 Consuming REST サービスで IIS で独立してホストされる)
|
| | __ スマートフォン クライアント アプリケーション (REST サービスを利用)
実装済みの認証:
Web API でのトークン ベースの認証 (メッセージ ハンドラーを使用) - 認証用のすべての http 要求ヘッダーの一部である必要がある、認証されたユーザーの SHA1 暗号化トークンを生成します。
(トークン = ユーザー名 + ユーザー IP)SSL で保護された HTTP 要求。(繰り返しますが、メッセージ ハンドラーを使用します)
現在の問題:
- 承認はどの層で実装する必要がありますか?
- クライアントでユーザー ロールをどのように保持する必要がありますか? クッキーを使用していますか? またはトークン自体にロール情報を追加する (これにより、情報を復号化するための API のオーバーヘッドと、そのロールに関連付けられたアクセス許可を取得するための追加の DB 呼び出しが追加される可能性があります)
- クライアント セッションで認証トークンを保持する方法は?
- 私のアプリケーションはSPA MVCアプリケーションであるため、APIに対して行うすべてのAJAX呼び出しの一部として認証トークンを含める最良の方法は何ですか?
認証/承認の概念全体を考慮しながら、間違ったことをしていないことを願っています。したがって、代替アプローチ/提案をいただければ幸いです。