問題タブ [asp.net-web-api2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
920 参照

c# - ASP.NET WebApi2/MVC5 Cookie 認証

Cookie認証を実装しようとしています。これが私のログインアクションです:

認証は次のとおりです。

しかし、 User.Identity.Name はまだ空です。私が間違っているのは何ですか?認証されたユーザーを取得するにはどうすればよいですか?

ここに私の Startup.Auth があります:

0 投票する
1 に答える
7677 参照

asp.net-web-api - ヘッダー値を渡す WebApi2 単体テスト

私は WebApi2 を使用してプロジェクトに取り組んでいます。私のテスト プロジェクトでは、Moq と XUnit を使用しています。

これまでのところ、API のテストは、GET のようなものを実行するのは非常に簡単でした。

ここで、リクエスト ヘッダーから値にアクセスする必要がある、少し複雑な作業に移ります。

IHttpActionResult を拡張して、独自の Ok() 結果を作成しました

これにより、リクエストからヘッダー値を読み取る小さなヘルパーを作成できます。

ダミーのリクエストでMoqをセットアップするにはどうすればよいですか?

過去 1 時間ほどかけて、webapi でこれを実行できる例を探しましたが、何も見つからないようです。

これまでのところ...そして、APIにとっては間違っていると確信していますが、私は持っています

過去にモック HttpRequestBase をセットアップする必要がなかったため、次に何をする必要があるかはよくわかりません。

誰かが良い記事を提案したり、私を正しい方向に向けたりできますか?

ありがとうございました!!!

0 投票する
1 に答える
244 参照

asp.net - ASP.NET ID クレームとログイン

新しいアイデンティティ認証を理解しようとしています。なぜ UserClaims と UserLogins を使用する必要があるのでしょうか。(私は外部認証を使用していません)。どこで使用すればよいですか?

請求なしでサインインする方法は? 現在、私はクレームでサインインしています:

0 投票する
2 に答える
79 参照

security - 認証済みユーザーから Web API アクションを保護する

私はこのシナリオを持っています:

1 ユーザー - N プロジェクト

1 プロジェクト - N タスク

1 プロジェクト - N コメント

ユーザーが認証されると、次のことができます。

彼のタスクを削除するには

彼のコメントを取得するためですが、彼が /api/comments/2 を実行しているとき、彼は他の誰かのタスクを読み取ります

ユーザー アクション (URI の操作) をインターセプトし、ユーザーがこのタスクを削除できるかどうかを一般的な方法で確認するにはどうすればよいですか。

タスクとコメントは userId について何も知らないので、ユーザーが他の人のデータを削除することをどのように禁止できますか?

ユーザーとロールのシナリオについて話しているのではありません。URI を操作して、他の誰かに属するリソースを削除することについて話しているのです。

@A Khudairyの質問に答える更新

1) メール + パスワードが api に送信されます。

2) API は、ユーザー トークンを使用してユーザーを返します。

3) 次に、すべてのリクエストでトークンが api に送信されます (これにより、どのユーザーが何をしているかがわかり、バックエンドでこれを処理します)。

0 投票する
1 に答える
27685 参照

asp.net-mvc - 複数の API クライアントからの Web API 2 外部ログインを OWIN ID に登録する

次のアーキテクチャが必要です (この例の製品名を作成しました)。

1 つのサーバーで実行される Web API 2 アプリケーション http://api.prettypictures.com

別のサーバーで実行されている MVC 5 クライアント アプリ http://www.webpics.com

www.webpics.comクライアント アプリで次の目的で Pretty Pictures API を使用したいと考えています。

  • ユーザー名とパスワードで新しいアカウントを登録する
  • Facebook/Google/Twitter/Microsoft に新しいアカウントを登録する
  • ログイン
  • 写真を取得する

Facebook、Googleなどに外部アカウントを登録することを除いて、上記のすべてが機能します。

API の別のクライアント ユーザーから外部アカウントを作成する正しいフローがわかりません。

次のように、認証フローで利用可能なほとんどのドキュメントを調査しました。 ここに画像の説明を入力

OWIN の新しい ID モデルについて、できることはほとんどすべて読みました。

私は Visual Studio 2013 で SPA テンプレートを調べました。これは、クライアントと API が同じホスト上にある場合にのみ、必要なことのほとんどを実行する方法を示しています。複数のクライアントが自分の API にアクセスし、ユーザーが Google などを介してサインアップできるようにしたい場合、それは機能せず、OWIN 認証フローが壊れていることがわかります。

ここまでの流れは次のとおりです。

  • ユーザーがwww.webpics.com/Loginにアクセスします
  • www.webpics.comはapi.prettypictures.com/Account/ExternalLoginsを呼び出し( www.webpics.comのコールバックに戻るようにreturnUrlを設定)、結果のリンクをユーザーに表示します。
  • ユーザーが「Google」をクリック
  • ブラウザーは、プロバイダーの名前などでapi.prettypictures.com/Account/ExternalLoginにリダイレクトします。
  • API のExternalLoginアクションは、 google.comへのチャレンジをインスタンス化します
  • ブラウザはgoogle.comにリダイレクトされます
  • ユーザーはユーザー名とパスワードを入力します (まだgoogle.comにログインしていない場合) 。
  • google.comは現在、セキュリティ クリアランスを提示しています。「api.prettypictures.com」は、あなたのメール アドレス、名前、妻、子供などへのアクセスを求めています。これでよろしいですか?
  • ユーザーが「はい」をクリックすると、Google が設定した Cookie を使用してapi.prettypictures.com/Account/ExternalLoginに戻ります。

これは私が立ち往生したところです。次に起こることは、ユーザーがgoogle.comで正常に認証されたことをクライアント アプリに何らかの方法で通知し、後でアクセス トークンと交換するための 1 回限りのアクセス コードを与えることです。クライアント アプリには、必要に応じて、 google.comログインに関連付けるユーザー名をユーザーに求める機会が必要です。

これを容易にする方法がわかりません。

実際、この時点でブラウザは、Google からのコールバックの後、 api.prettypictures.com/Account/ExternalLoginエンドポイントに留まっています。API は Google にサインインしていますが、クライアントはその処理方法を知りません。その Cookie をwww.webpics.comに送り返す必要がありますか?

SPA アプリでは、AJAX を介して行われ、google.comはトークンを URL フラグメントとして返します。すべてが 1 つのドメインにあるため、すべてうまく機能します。しかし、それは、複数のクライアントが完全に使用できる「API」を持つという点の多くに反しています。

ヘルプ!

0 投票する
2 に答える
595 参照

asp.net-web-api - AuthorizeFilter 内の API コントローラー コンストラクター値を取得する

ユーザーが認証されると、他のアカウントから作成されたデータを更新/削除/読み取りするのを防ぎたい...許可403がないことを彼に伝えることで!

HasUserPermission() メソッドを呼び出す ISchoolyearService のインスタンスを取得する最良の方法は何ですか?

ここでSchoolyearServiceを新たに追加できることはわかっていますが、それではアプリでIoContainerを使用する理由がまったくなくなります。

0 投票する
2 に答える
806 参照

asp.net-web-api - Web API で MyAuthenticationHandler から MyAuthorizationFilterAttribute に一時データを渡す

認証ハンドラーが正常に通過したら (userId は復号化されたトークンから取得されます)、userId を現在の要求オブジェクトのどこかに追加したいと考えています。

パイプラインの後半でユーザーが認証されると承認が実行されます。ここでは、認証されたユーザーが特定の userId を持つ他のユーザーからのデータを操作することを禁止する必要があるため、userId が再び必要になります。

userId を一時的に保存する最良の方法は何でしょうか? request.headers を悪用して userId を追加する必要がありますか?

0 投票する
2 に答える
1785 参照

asp.net - asp.net web api 2 urlルーティング属性をヒットしても見つかりません

Web API 2 で asp.net MVC 5 を使用しています。新しい属性ルーティングをテストしていますが、これは十分に単純に思えます。msdn の紹介リンクをたどりましたが、まだ非常に簡単な設定ができません。

API 構成ファイル:

API コントローラーで:

私の見解では、ajax経由でルーティングを呼び出しています。クロム開発者ツールでは、このルートに到達しようとしています:

そして私は404応答を得ています。

ここで構文を台無しにしていますか? 次のような ajax 呼び出しがあります。

apiBaseUrl は 'api/recruiting' です

0 投票する
1 に答える
334 参照

rest - asp.net MVC の Web API での承認

私はASP.NETが初めてで、残り...

私は単に web api2 を作成しています。REST サーバーの準備ができており、クライアントの準備も整っています。

API には、ユーザー名とパスワードを持つ有効なユーザーのみがアクセスする必要があります。したがって、有効なユーザーを確認する必要があるため、次の方法でユーザーにアクセスしようとしました。

その呼び出しで、以下のメソッドにアクセスします。

しかし、エラーをスローします。そして、これはそうではないようです。良いチュートリアルを参照するか、この問題を解決するのを手伝ってください...とても役に立ちます。