0

目標は、ネイティブモバイルデバイス(ios、android、win phone)とさまざまなプレゼンテーションを持つWebアプリケーションで共有できるapiを作成することですレイヤー(asp.netコアMVC、角度)。asp.net mvcとweb APIの両方に対して同じ認証メカニズムを実装する方法

モバイルクライアントとjavascriptクライアントで使用されるREST APIを実装するためのasp.netコアWeb APIの使用を計画しています。私の質問は、asp.net MVCのような他のプレゼンテーション層は、セキュリティロジックを置くのが理想的な場所で使用されるからです。チェックをREST APIに追加すると、asp.net MVCアプリケーションコントローラは、ビジネスレイヤ(共有クラスライブラリ)を参照するのではなく、HttpClientを使用してREST Web APIを呼び出す必要があります。

各アプリケーションの認証は、モバイルフレンドリーで簡単に拡張できるため、json Webトークンで処理されます。ですから、私の質問は本当に認可のセキュリティとそれがどこにあるかについてです。

オプション1:

ウェブAPI(セキュリティがここに住んでいる)>ビジネス/サービス層>データアクセス層>データ層

オプション2: ウェブAPI>ビジネス/サービス層(セキュリティがここに住んでいます) >データアクセス層>データ層

オプション1では、これはREST APIを呼び出す必要があるため、モバイルとクライアントのフロントエンドでは問題ありませんが、asp.netのコアMVCはHttpClientを使用してREST APIを呼び出す必要がありますbuinsess/service層を構成する共有クラスライブラリを呼び出すのではなく、

オプション2では、すべてのREST APIが、セキュリティが処理されるビジネス/サービスレイヤーを呼び出すことになります。

+1

OpenID Connectは良いスタートです[http://openid.net/connect/](http://openid.net/connect/)。または、独自の認証サービスを実装します。そして、あなたのアプリケーションはすべてそれが使用されます。サービスでは、ビジネスレイヤを参照します。そして、_MVCはHttpClientを使ってREST APIを呼び出さなければなりません - なぜこれが問題なのですか? – Fabio

+0

HttpClientを使用してREST APIを呼び出すことは問題ではなく、他の人が行ったことであるかどうかを尋ねるだけで、共有ライブラリを参照するのではなくHttpClient経由でサービスを呼び出すとパフォーマンスなどの問題があるかどうかを確認する必要があります。 。 – maguy

+0

アイデンティティ・サーバーは、ssoを作成するためのフレームワークです。これは、必要なものです。 – misha130

答えて

0

パブリックAPIを構築しようとしているようですね。これはスタンドアロンで、セキュリティを単独で処理する必要があります.MVC Webサイトは別のクライアント(同じソリューションに存在する可能性があります)ですが、理想的には、それらの間に参照が多すぎる必要はありません(基本的にAPI契約のみ)。この方法では、MVCサイトが常に厳密に型指定された方法(リファクタリングを介して)で動作するのではなく、以前の壊れた互換性の問題を以前に見つけ出すことができます。一方(特にモバイルクライアント)は、 APIのバージョン管理に頼っています。

サーバー側で一定の対策(キャッシングなど)を行うと、このような方法で動作するAPIがたくさんあります。

関連する問題