16

次のシナリオの良いアイデア/リソース/実装を探しています

MVC Webサイト(http://mywebsite.com )

http://myapi.comのWebapiRESTサービス

重要-個別のドメイン/アプリケーションに注意してください。

ユーザーがWebサイトにログインし、JSONP/CORSを介してAPIからデータがフェッチされます

明らかに、私はユーザーが基本認証を使用してwebapiで認証することを望んでいません。ただし、APIはAndroid / IOSアプリにも公開されているため、基本認証が必要です

MVCサイトからトークンを返し、そのトークンを使用して認証するためにwebapiサイトでDelegatingHandlerを作成することを考えましたが、いくつかの入力、またはおそらくさらに優れたソリューションが必要です

私はその場のためだけにきれいな図を作りました:

ダイアグラム

4

2 に答える 2

9

JSONPは機能しますが、ここでWebApi実装のいくつかの例をCORSの使用も検討してください。

独自のトークンを作成するのではなく、トークンの標準(少なくともドラフト)に従うことを検討してください。Json Web Token(JWT)は良いアプローチのようです。ここでの仕様にはフォーマットが含まれており、暗号化または署名のアプローチを決定します。Thinkteckture Identity Model など、この種のトークンをサポートするライブラリがあります。この記事では、そのライブラリとJWTの使用法の一部について説明します。Googleにはここに優れた開発ガイドがあります。

免責事項、OAuthとJWTの標準化の批判のいくつかについて読んだ上記を考慮してください。

HTTPヘッダーを使用した場合、カスタムヘッダー(@Vipul)が必要かどうかはわかりません。この種の情報には、「Authorization:」ヘッダーがあります。

カスタムトークンを使用している場合は、有効期限があることを確認し、リプレイ攻撃から保護し、よく知られたアルゴリズムを使用して署名または暗号化する場合は、ナンスの使用を検討してください。

委任ハンドラーはトークンの検証を行うのに適した場所であることに同意します。ActionFilterは、スタック内で必要以上に後で呼び出されます。その中間点は、 System.Web.Http.AuthorizeAttributeを実装することです。

于 2012-12-10T12:30:08.343 に答える
1

トークンソリューションは良さそうです。

MVCアプリケーションから認証トークンを取得します。カスタムヘッダーの各APIリクエストでそのトークンを送信できます。ActionFilterAttributeを作成すると、OnActionExecutingでトークンを確認し、それに応じて動作できます。

于 2012-12-10T09:18:26.063 に答える