私はWebサービスを持つWebアプリケーションを持っています。クライアントはWebアプリケーションを使用してアプリケーションを登録します。エンドポイントをセキュアにするwebapiのトークンベースの実装
クライアントはタイプSPAまたはモバイルアプリのアプリケーションを持ち、アプリケーションから自分のWebサービスを消費します。
私はトークンベースのメカニズムを実装して、エンドポイントへのアクセスを保護します。
1)しかし、ここで私は、私がアクセストークンを生成するために、任意のフレームワークを使用しなければならないか、私はこのようなresponse.forインスタンス何かに送信されます任意のランダムな文字列を生成する任意のライブラリを使用することができる混乱しています:
TokenId = Convert.ToBase64String(Guid.NewGuid().ToByteArray()).Replace("+", "_")
クライアントがアプリケーションの認証を有効にしている場合、アプリケーションを登録している間にユーザーが検証され、アクセストークンが返され、そのユーザーIDでデータベースにaccesstokenを保存します。
だから私のデータベーステーブルが検証さaccesstokenを格納するために、以下のようになります:
Id(autogenerated) accesstoken userid clientid createdat expiresat
したがって、ユーザーが認証され、ユーザが任意の保護されたリソースにアクセスしたい場合は、今、ユーザーは、後続の呼び出しで、このアクセストークンを渡す必要がありますされた後、ヘッダ内にある。
私は何をすればよいのでしょうか?ヘッダーからアクセストークンを取得し、そのデータベースに対してaccesstokenを検証して、保護されたリソースへのアクセスを許可します。
これに関連することがたくさんあるので、これは基本的にはoauth2であり、これを実装したいと思います。
私は(このプロジェクトはコンパイルされていません)がoauth2の上にあり、認証に使用されており、oauth2が承認に使用されていることがわかりました。
しかし、ここで私はここに私のデータベースにアクセストークンを格納していてそれに関連した私の疑問です:
2)今私はopenconnectidが必要です(ただし、このプロジェクトでもコンパイルされません)アクセストークンまたはを検証するためのデータベースにアクセストークンを格納しているのでopenconnectidは必要ありませんか?
3)私はasp.netアイデンティティを実装したいですが、次に動的データベース接続文字列を受け取ります。asp.netアイデンティティが主にエンティティフレームワークで動作するのを見たので、私はどこでもどこでもソースを見つけることができませんでした。 SQLクエリを使用してユーザー名とパスワードを検証します。 here が
public class UserStoreService
: IUserStore<CustomUser>, IUserPasswordStore<CustomUser>
を実装するカスタム・ユーザー・ストアを定義し説明したようたIUserを実装するカスタム・ユーザー・クラスを作成します
しかし、私は、私のように、この情報を持つことはありません。私はこのような何かを行うことができます知っています固定接続文字列を持っていません。接続文字列は、クライアント登録されたデータベースに再度格納されます。
4)私たちは、クライアントが管理者を作成するための固定エンドポイントを与えました。そのために私はRSAアルゴリズムを使用してパスワードハッシュを作成し、それをデータベースに格納します。だから今これで私はasp.netのアイデンティティを使用する必要がありますか?
5)トークンベースの実装では、次のようなリンクがたくさんありましたが、私はどこにいるのかを確認していませんが、データベースに格納されているaccesstokenを持っているので、次の実装?
http://bitoftech.net/2014/10/27/json-web-token-asp-net-web-api-2-jwt-owin-authorization-server/
http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/
6)また、任意のクライアントのために、クライアントは、私が何をするか、そのそれぞれのアプリケーションの認証をしたい私はそのユーザ名・パスワードの検証を持っていないだろうでない場合は場合はI単にaccesstokenを生成してから、それ以降のすべての要求に応答して送信します。アクセストークンは保護されたリソースにアクセスするために渡されます。これは意味をなさないと思いますか?
アクセストークンがデータベースに格納され、データベースにアクセストークンを格納する際の問題は、各エンドポイントのアクセストークンを検証するたびにデータベースを呼び出す必要があるという例は見たことがありません。
アップデート:私のWebサービスエンジンの
ユースケースは次のようになります。
1)複数のクライアント・アプリケーションをサポートしています。
2)各クライアントアプリケーションのトークン管理の形式でユーザーセッションを管理します。したがって、記事のほとんどはアイデンティティにアクセス権を格納しており、そのアイデンティティは[アクセス権]属性内で検証され、アクセス権も検証され、そのユーザーに基づいて保護されたリソースにアクセスすることが許可されています。
私はまた、複数のクライアントアプリケーションをサポートするIDの中にユーザーIDとストアユーザーコンテキストを置くのが良い考えですか?
ハイラーニング。私は、あなたが大文字小文字とアポストロフィの規則を守るために何か努力しようとしているかどうか、ここで(https://stackoverflow.com/q/46450952)と[ここ](https://stackoverflow.com/q/46687358)あなたの文章、そしてここで私はあなたのポストに別の30の誤りを修正しています。あなたの英語ははっきりとしているので、私は携帯電話であなたの記事を作っているのかどうか、あるいはこれらのエラーが文体的なのかどうか疑問に思っています。 Stack Overflowはフォーラムではないことを覚えておいてください。これはQ&Aサイトであり、明確にするために少なくともいくつかの基準を維持しようとしています。 – halfer
投稿を調整し改善するのに役立つボランティア編集者が多数いますが、私たちはあなたの自動修正ではありません。あなたは助けてもらえますか? – halfer
私はこの質問をコンピュータから投稿していますので、時々私はアポストロフィや他のいくつかのエラー(私は推測します)がありますが、私の質問の目的は簡単に理解でき、はっきりしていますが、 –