1

私はかなり Web 開発に慣れていないので、用語が少しずれている場合はご容赦ください。

ASP.Net Web API を作成しました。API の特定のメソッドについては、そのような呼び出しを行うためにユーザーが認証されているかどうかを確認する方法が必要です。たとえば、特定のメソッドでは、呼び出しを行っているユーザーのユーザー ID を伝える必要があります。

AllowAnonymous および Authorize 属性 (System.Web.Http.AuthorizeAttribute および System.Web.Http.AllowAnonymousAttribute) についていくつか読みました。私が行った読書から、REST APIの場合、実際にはMvcのものではなく、System.Web.Http.AuthorizeAttributeを使用する必要があります(ここで述べたように: http://www.asp.net/web-api/overview /security/authentication-and-authorization-in-aspnet-web-api#auth3 )。適切な属性を持つコントローラーとメソッドを用意したので、コントローラーには [Authorize] 属性が付けられ、公開されているメソッドには [AllowAnonymous] が付けられます。これが機能することを確認するには、公開されているメソッドを呼び出して機能し、[Authorize] メソッドを呼び出すと 401 応答が返されます。

私は現在、WorldDomination パッケージに接続して、サードパーティ ( https://github.com/PureKrome/WorldDomination.Web.Authentication ) で認証するようにしています。これは、Twitter、Facebook、Google などで認証する最も簡単な方法のようです。これがどのように機能するかは、(Web API を使用している) Web サイトのユーザーが (Twitter、Google、Facebook、等。)。次に、次のような通常のログイン ページに移動します (この例では、Twitter を使用しています)。

いつものログインページ

ユーザーがアクセスを許可すると、HttpContextBase にアクセスできるサーバーで呼び出されるメソッドと、サードパーティから返されたユーザー データ (プロバイダー名、アクセス トークン、ユーザー名、ユーザー ID、等。)。同様に、ユーザーがキャンセルした場合、または許可を許可しなかった場合にも、同様の関数が呼び出されます。成功関数のこの時点で、サードパーティのユーザーを自分の内部ユーザー ID に関連付けています。これは、後で他のさまざまな API 呼び出しで使用する必要があります (たとえば、オブジェクトを作成するには、誰が作成したかを知るためにユーザー ID が必要です)。それ)。

この時点で、私は少し立ち往生しています。私が理解していることから、Web API への認証済み呼び出しを行うには、要求ヘッダーで 64 ビット文字列としてエンコードされたユーザー名:パスワードを渡す必要があります。問題は、ユーザー名/パスワードを保存していないことです (パスワードも保存したくありません!)。

「username:password」には正確に何を使用すればよいですか? また、それをクライアントに保存して、後続の呼び出しで使用できるようにするにはどうすればよいですか? 自分の内部ユーザー ID をユーザー名として、(サード パーティから付与された) アクセス トークンをパスワードとして使用できますか、それとも、ユーザーがサード パーティ経由でログインするたびに作成される、ランダムに生成された Guid をパスワードにする必要がありますか? サイトは最終的に、証明書を使用して Https を介して実行されます。理想的には、ユーザーがサイトにアクセスするたびにログインする必要がないようにしたいと考えています。

当面は、クライアント側の Cookie を使用して詳細を保存する標準のフォーム認証を使用できますが、クライアント側の Cookie を使用せずに認証を行う方法を知る必要があります。複数のプラットフォーム (モバイル デバイス上のアプリを含む) からアクセスできる API。私の限られた理解では、これらのプラットフォームの一部は必ずしも Cookie を使用するわけではなく、各呼び出しに含まれる標準の http 認証の詳細を使用して認証する必要があります。

4

0 に答える 0