web-dev-qa-db-ja.com

このリクエストの承認が拒否されました-新しいWeb APIプロジェクト

Visual Studio 2015で(MVCを使用して)新しいWeb APIプロジェクトを作成しましたが、テスト目的でそのプロジェクトを実行しましたが、エラーが発生しました。

プロジェクトを実行すると、ホームページが正しく表示されますが、/ api/valuesまたは/ api/values/5に移動すると、以下のxmlメッセージが表示されます。

<Error>
    <Message>Authorization has been denied for this request.</Message>
</Error>

誰か助けてくれますか? Web APIは初めてです。 Authorize属性を削除したくないことに注意してください。承認後にのみリソースにアクセスしたい。だから私は間違っているものを探しています。

32
atp9

ValuesControllerには、属性Authorizeがあります。これを削除すると、ホームページとして機能します。

Authorize属性は、匿名ユーザーがValuesControllerにアクセスできないようにするだけです。

この属性を使用するには、まずユーザーを登録し、次にログインしてユーザーのトークンを取得する必要があります。次に、トークンを使用して自己を認証し、アクセス権を取得できます。

このページでは Individual-accounts-in-web-api に必要なものがすべて説明されています

62

ValuesControllerAuthorize 属性があるために発生します

[Authorize]
public class ValuesController : ApiController

[Authorize]を削除してもう一度お試しください

編集

編集内容に応じて、新しいユーザーを作成してログインするか、@ Marcus Hが述べた[AllowAnonymous]を使用する必要があります。IDの詳細

20
Roman Marusyk

ここで答えを得ました。

https://stackoverflow.com/a/29405794/8107314

そして、私のエラーを修正するのは非常に便利でした

私はちょうど同じ問題に出会い、解決策を見つけました:

WebAPIを登録する前に、OAuthトークンジェネレーターとOAuthトークンコンシューマーを登録する必要があります。

これをパイプラインと考えると、一種の理にかなっています。パイプラインでは、コントローラーによる要求処理の前に認証/承認が行われる必要があります。

TL; DR:変更

appBuilder.UseWebApi(config);

this.ConfigureOAuthTokenGenerator(appBuilder);
this.ConfigureOAuthConsumer(appBuilder);

this.ConfigureOAuthTokenGenerator(appBuilder);
this.ConfigureOAuthConsumer(appBuilder);

appBuilder.UseWebApi(config);

Cguedelトップ43%のシニアソフトウェアエンジニア全体

すべての.NETに関心のあるソフトウェア開発者、特にWPF SOreadytohelp

0
K C Frank