2012-03-30 3 views
0

私はoAuthを使用して認証を実装しようとしており、これに対してDotNetOpenAuthを使用しています。DotNetOpenAuthを使用してシングルアクセストークンによるWebサービス間の要求を承認

私たちは、プロジェクト要件を満たす複数のREST Webサービスを提供しています。 1つのAuthenticationService、Customer Service、Order Serviceなどがあります。

コンシューマーは、このサービスを使用してユーザーを認証し、そこからアクセストークンを取得します。今、コンシューマーはカスタマーサービスのメソッドとアクセストークンを渡します。

カスタマーサービスは、認証サービスからアクセストークンを検証する必要があります。

カスタマーサービスでコンシューマーから送信された認証ヘッダーをキャプチャしようとしましたが、これをカスタマーサービスの認証サービスに渡そうとしましたが、署名を作成するために消費者が使用したURIがカスタマーサービスが認証サービスでこれを検証している間は、実際のリクエストはカスタマーサービスから来ます。これは別のものです。

希望問題を説明することができます。

どうすればこの問題を解決できますか?

答えて

1

OAuth 1.0を使用していると仮定します。また、顧客サービスの代わりにのトークンが認証サービスによって信じられているように、顧客サービスからOAuth認証を認証サービスに転送しているようです。そうであれば、MITMがトークンを別のサービスにリダイレクトする攻撃を効果的に(そして偶然に)実行しているため、この無効な署名は設計によるものです。

各サービスは、アクセストークン自体を検証する必要があります。アクセストークンを別のサービスに転送することはできません。各サービスはITokenManagerのデータベースを認証サービスと共有することでこれを行うことができます。

+0

サービス間でトークンデータベースを共有したくありません。だから今、私は何をしようとしています。各Webサービスにコンシューマキーと秘密を割り当てました。 Application Start Webサービスは自身を認証します。コンシューマーは、Accessトークンとそのコンシューマーキーをカスタマーサービスに送信します。カスタマーサービスは、アクセストークンとコンシューマーのキーを検証する認証サービスを呼び出します。 – Lalit

+0

Application_Startでのカスタマーサービス認証は、IDEの下でWebDev Serverを使用してテストしたときに機能しましたが、IIS 7でホストすると失敗し、「このコンテキストではレスポンスを使用できません」というエラーが返されました。私はApplication_BeginRequestでこのコードを移動しようとしましたので、すでにコールされていなければコールのサービスを認証できます。しかしこれも失敗しました。どのように私はこれを行うことができますか? – Lalit

+0

私はあなたの新しいデザインに従わない。しかし、トークンデータベースを共有したくない場合は、そのシナリオをサポートするOAuth 2を強く検討する必要があります。 –

関連する問題