私はうまく私を認証するように思わアイデンティティ2.を使用してWeb APIを持っている、と/Token
エンドポイントはかなりのような内容で、私はAuthTicket
インスタンスにデシリアライズ何を返します。私はリクエストを送信するときに、次にIdentity 2のASP.NET Web APIで保護されたリソースにアクセスできないのはなぜですか?
AccessToken: "averylongtoken"
Expires: {2016/12/12 8:19:22 AM}
ExpiresIn: 1209599
Issued: {2016/11/28 8:19:22 AM}
TokenType: "bearer"
Username: "myusername"
以下のような:
var response = await Client.GetAsync("api/appt/3/true", cancellationToken);
とClient.DefaultRequestHeaders.Authorization
次のようになります。
Bearer theSameVeryLongToken
私はまだ401 - Not authorized
を取得します。ここで何が間違っているのでしょうか? Web APIが何らかの形でベアラトークンを受け取っていないか、適切に解読していないことがありますか? APIでブレークポイントを設定し、コントローラアクション内のUser
プロパティを調べると、そのプロパティはすべてnullまたはデフォルトですが、1つのClaimsIdentity
があり、そのプロパティもすべてnullまたはデフォルトであり、そのClaims
コレクションは空です。
すべてのクレームを手作業で設定する必要がありますか?私はApplicationOAuthProvider.GrantResourceOwnerCredentials
は、少なくともユーザー名やIDなどのクレームを追加すると思っていただろう。
Fiddlerでリクエストを実行した場合、リクエストヘッダーにトークンが渡されていますか?また、GrantResourceOwnerCredentialsメソッドのOAuthProviderクラスのRequest Contextには何が表示されますか? – Jinish
何らかの理由で、私のAPI URLでキャプチャされたリクエストが表示されません。フィルタをホスト 'localhost:51999'のみに設定し、クライアントからの投稿要求を実行すると何もキャプチャされません。 'GrantResourceOwnerCredentials'にはリクエストコンテキストがなく、' OAuthGrantResourceOwnerCredentialsContext'だけがあり、 '/ Token'エンドポイントから呼び出されたこのメソッドではありません。これは、ユーザに署名するためです。これはすべて正常に動作します。ログイン時に '/ Token'からの正式な返答を認証トークンとともに返信しますが、まだ' GrantResourceOwnerCredentials'のヘッダには含まれません。 – ProfK