[解決済み] ASP.NET Web APIでのユーザー認証
質問
このトピックは、私にとって信じられないほど分かりにくいものでした。私はHTTPアプリケーションの初心者ですが、どこからかJSONデータを消費するiPhoneクライアントを開発する必要があります。私はMSからWeb APIを選択しました、それは十分に簡単に見えたからですが、ユーザーを認証することになると、物事は非常にイライラします。
ログイン画面でのユーザー認証の方法から
Authorize
属性の上に
ApiController
メソッドを数時間かけてググった結果
これは質問ではなく、具体的にどうすればいいのかの例を教えてほしいという要望です。以下のページを拝見させていただきました。
これらは不正なリクエストを処理する方法を説明するものであるにもかかわらず、これらのデモでは
LoginController
などで、ユーザーの認証情報を求め、それを検証します。
どなたか簡単な例を書いてくださるか、正しい方向を示してくださる方、お願いします。
ありがとうございます。
解決方法は?
<ブロッククオートログイン画面からAuthorize属性を使ってApiControllerのメソッドでユーザーを認証する方法について、数時間ググっても明確な例が見つからなかったので驚いています。
それは、あなたがこの2つの概念を混同しているからです。
-
認証は、システムがユーザーを安全に識別するためのメカニズムである。認証システムは、質問に対する答えを提供する。
- ユーザーは誰ですか?
- ユーザーは本当に自分を表現している人なのか?
-
認証とは、システムが制御する安全なリソースに対して、認証された特定のユーザーがどのレベルのアクセスを持つべきかを決定するメカニズムです。例えば、データベース管理システムは、ある特定の個人にはデータベースから情報を取り出す能力を与え、データベースに保存されているデータを変更する能力は与えないが、他の個人にはデータを変更する能力を与えるように設計することができる。権限付与システムは、このような疑問に対する答えを提供するものです。
- ユーザーXはリソースRにアクセスする権限があるか?
- ユーザー X は操作 P を実行する権限がありますか?
- ユーザーXは、リソースRに対して操作Pを実行する権限がありますか?
は
Authorize
属性は、MVCにおけるアクセスルールの適用などに使用されます。
[System.Web.Http.Authorize(Roles = "Admin, Super User")]
public ActionResult AdministratorsOnly()
{
return View();
}
上記のルールでは のユーザは 管理者 と スーパーユーザー ロールを使用してメソッドにアクセスします。
これらのルールは、web.config ファイルで
location
要素を使用します。例
<location path="Home/AdministratorsOnly">
<system.web>
<authorization>
<allow roles="Administrators"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
しかし、それらの認可ルールが実行される前に、あなたは 現在の Web サイトで認証された .
これらは不正なリクエストを処理する方法を説明しているにもかかわらず、LoginControllerなどのような、ユーザーの認証情報を要求し、それを検証するためのものを明確に示していないのです。
ここからは、問題を2つに分けることができます。
-
同じWebアプリケーション内でWeb APIサービスを消費する際に、ユーザーを認証する。
これは最もシンプルな方法です。 ASP.Netでの認証
これは簡単な例です。
Web.config
<authentication mode="Forms"> <forms protection="All" slidingExpiration="true" loginUrl="account/login" cookieless="UseCookies" enableCrossAppRedirects="false" name="cookieName" /> </authentication>
ユーザーは アカウント/ログイン ルートで、ユーザー認証情報を要求するカスタムコントロールをレンダリングし、認証クッキーを設定します。
if (ModelState.IsValid) { if (Membership.ValidateUser(model.UserName, model.Password)) { FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe); return RedirectToAction("Index", "Home"); } else { ModelState.AddModelError("", "The user name or password provided is incorrect."); } } // If we got this far, something failed, redisplay form return View(model);
-
クロスプラットフォーム認証
このような場合は、次のようになります。 Webアプリケーション内でWeb APIサービスのみを公開する。 したがって、サービスを消費する別のクライアントを持つことになります。クライアントは、別のWebアプリケーションまたは任意の.Netアプリケーション(Win Forms、WPF、コンソール、Windowsサービスなど)である可能性があります。
例えば、同じネットワークドメイン内(イントラネット内)の別のWebアプリケーションからWeb APIサービスを消費すると仮定すると、この場合、ASP.Netが提供するWindows認証に依存することができるだろう。
<authentication mode="Windows" />
インターネット上に公開されているサービスの場合、各Web APIサービスに認証済みトークンを渡す必要があります。
詳しくは、以下の記事をご覧ください。
関連
-
ASP.NET学習でよくあるエラーのまとめ
-
ASP.NET Coreで複数のサービス実装クラスをインジェクトする方法
-
[解決済み] Chromeを使用してASP.NET Web APIがXMLの代わりにJSONを返すようにするにはどうすればよいですか?
-
[解決済み] ASP.NET WebサイトとASP.NET Webアプリケーションのどちらを選ぶか?
-
[解決済み] ASP.NET Web APIに整数の配列を渡しますか?
-
[解決済み] ASP.NET Web APIでエラーを返すためのベストプラクティス
-
[解決済み】ASP.NET Web APIでコントローラからバイナリファイルを返す。
-
[解決済み】ASP.NET Web APIのJWT認証について
-
[解決済み】ASP.NET Web APIを使用したセッションへのアクセス
-
[解決済み] web.configの変換で "Replace Or Insert "を行う方法はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
.netcoreプロジェクトでIStartupFilterを使用するためのチュートリアル
-
.NET Coreでオブジェクトプールを使用する
-
NETガベージコレクション GC診断ツール dotnet-gcmon 使用方法
-
net core downlink tracking skywalking インストールと使いやすいチュートリアル
-
403 - アクセス拒否。IIS7 でファイルを開くと、アクセス拒否されます。
-
ASP.NETのオンライン統計とアプリケーションとセッションを使用した訪問履歴
-
[解決済み] System.Data.Entity.Internal.AppConfig' の型イニシャライザーで例外が発生しました。
-
[解決済み】ASP.NET Bundles ミニフィケーションを無効にする方法
-
[解決済み] Server.UrlEncode vs. HttpUtility.UrlEncode
-
[解決済み] Asp.Net 4でValidateRequest="false "が動作しない。