0

私は、バックエンドとしてモバイルクライアントによって使用されるWeb APIプロジェクトでFacebook認証を実装しようとしています。ローカルログインはありません。Web APIでFacebook認証を使用する方法

私はMicrosoft's documentationで説明した手順に従って、Visual StudioのWeb APIテンプレートを使用してプロジェクトを作成しました。

app.UseFacebookAuthentication(
appId: "***", 
appSecret: "***"); 

それから私はLocalDBデータベースを作成し、設定します。それに応じてFacebookのパネル上のURIをリダイレクトして、私はStartup.Auth.csファイルのid &秘密を設定し、私はすでに、Facebookアプリ同上&秘密を持っている私は、OAuthの設定しましたするdefaultConnection文字列をweb.configファイル:

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=webapidb;Integrated Security=True;Pooling=False" providerName="System.Data.SqlClient" /> 

私はプロジェクトを実行すると、私はログインを開始するためにGETしてAccount.GetExternalLogin(?/ API /アカウント/ ExternalLogin /プロバイダ=フェイスブック)メソッドを使用することができます。 Facebookの承認ページにリダイレクトされました。その後、GetExternalLoginにリダイレクトされると、メソッドの "エラー"パラメータがnullであることがわかります。私はまた、User.Identity.IsAuthenticatedの時計を追加し、メソッド内で真と評価します。

今までのことはすべて期待どおりでした。

しかしGetExternalLoginメソッドが完了すると、私は、任意の[認証] -decoratedメソッドを呼び出すようにしてみてください(のような/API// 3値)と私はHTTP401不正なエラーが発生します。

さらにもう1つは、AspNetUsersテーブルを開いてもレコードがない場合、そこに保存されているFacebook IDとユーザー名が表示されることを期待していたことです。

クライアントが認証メカニズムをどのように消費すべきか、ユーザーIDと名前をデータベースに保存するにはどうすればよいか説明してください。

ありがとうございます!

答えて

0

ちょうど1ヶ月前に私はあなたの疑いがありました。

実際にリソースサーバー(API)を認可/認証サーバーから切り離してください。私が話していることを完全に理解するためにOAuth2の流れを見てみましょう。

私はthis open source projectを使用していますが、これらの人は認証用のオープンIDを持つ認証サーバーを使用しています。必要なのは、必要な設定だけです。ここで

は、私はこのトピック

https://security.stackexchange.com/questions/115799/what-to-do-for-my-web-api-authentication-scheme

Rest API authentication mechanism, what to do

Relation to users when these are stored in an external Identity provider service

How to secure my API

について尋ねてきたいくつかの質問にはまた、ケビンDockxことによってそれをPluralsightのコースをチェックしますプロセス全体を非常にうまく説明しています。 apiの作成、IDサーバの設定、およびMVCクライアントからのサービスの使用方法

関連する問題