認証と承認


626

Webアプリケーションのコンテキストの違いは何ですか?「auth」という略語がよく見られます。それがために立っていAUTH -enticationまたは認証 -orization?それとも両方ですか?


51
これを覚えておいてください:認証は資格情報をチェックし、承認は許可をチェックします。
OnurYıldırım2017

1
クロスサイト重複:serverfault.com/q/57077
Kyll

最近、authn認証とauthz承認のために見た略語について
jdf

これはあなたの質問に答えますか?認証と承認に違いはありますか?
paxdiablo

回答:


865

認証とは、誰かが本当に本人であることを確認するプロセスです。

承認とは、誰が何をすることが許可されているかを決定するルールを指します。たとえば、Adamはデータベースの作成と削除を許可されている一方、Usamaは読み取りのみを許可されています。

2つの概念は完全に直交で独立していますが、どちらもセキュリティ設計の中心であり、どちらかを正しく取得できないと、妥協の道が開かれます。

大まかに言えば、Webアプリに関して、認証とは、ログイン資格情報をチェックして、ユーザーがログインしていることを認識しているかどうかを確認することであり、承認とは、アクセス制御でユーザーに表示、編集、削除を許可するかどうかを調べることですまたはコンテンツを作成します。


32
定義は問題ないように見えますが、確かに独立しているようには見えません。定義されているように、承認 認証意味しませんか?彼アダムであると疑う場合、どうすればアダムのデータベース削除操作を許可できますか?言い換えると、Adamの削除操作が許可されている場合、Adamが認証されていることを意味します。
Timo

7
@Timo:アプリケーションはおそらく両方を実行したいと思うでしょうが、それらは直交する概念です。上司は、CCTVフィードのどの特定の個人がスプレッドシートの名前と一致するかを気にすることなく、ビジネスの重要なコンポーネント、ジェット、ビールの冷蔵庫にアクセスするためのスタッフの承認を確認することができます。後者は警備員の懸念になります。
Kerrek SB 2017

1
概念は間違いなく直交しています。認証は、必ずしも身元を証明するものではありません。それはあなた自身についての主張、例えば年齢を証明しているかもしれません。飲むときは、身分証明書を提示して年齢を証明します。その後、年齢と管轄区域によっては、飲酒が許可される場合があります(米国では21
David Brossard

1
@Sinjai:私はポイントはそれらが直交する懸念であるということだと思います、そしてそれらは別々の施設によって対処することができます:例:ドアの(信頼できる)バウンサーはクライアントの年齢を確立でき、施設内の異なるサービスは異なる年齢を持つことができます制限がありますが、すべてバウンサーから得た値を使用して入場決定を行います。
Kerrek SB、

1
それを見る別の方法(控え室の例のコンテキストで)は、認証がIDカードの写真をあなたの前に立っている人と照合するプロセスであるのに対し、承認はその年齢を確認するプロセスであると考えることです法的要件を満たしています。私の意見では、線がぼやける原因となるこのミックスの要素は、両方のテストが偽造を認識し、また偽造に対して強化されなければならないことです(IDは偽物です)。 auth-cとauth-zの両方の認証に等しく重要です。
ライアンハンセン

660

要するに、お願いします。:-)

認証 =ログイン+パスワード(あなたは誰ですか)

承認 =権限許可されていること)

短い「auth」は、最初の1つまたは両方を指す可能性が最も高いです。


3
ケーキのように甘い:)
devansvd

私はこれが好きで、短くて甘い。
キング

5
それでも、HTTP Authorizationヘッダーに認証情報が含まれている理由がわかりません。
イェンス、

@ジェンズの短い答え:はい。ロイフィールディングは当時、よくわかっていませんでした... ;-) </ tongue-in-cheek>
Per Lundberg、

@イェンス私もそう思っている。私は見つけるこの回答の直感は役に立ち。HTTPはステートレスであるため、認証情報は、開始リクエストと終了リクエストだけでなく、すべてのリクエストとともに送信する必要があります(安全なセッションの確立、認証なしのリクエストの送信など)。したがって、そのリクエストヘッダーは、ほとんどの場合、認証だけでなく他の意図(データの取得、imgなど)を運ぶため、承認でなければなりません。
ミンNghĩa

83

承認対認証は、それを置きます:

認証は、システムがユーザーを安全に識別できるメカニズムです。認証システムは、質問に対する回答を提供します。

  • ユーザーは誰ですか?
  • ユーザーは本当に彼/彼女が彼自身を代表している人ですか?

対照的に、承認は、システムが制御するリソースを保護するために、特定の認証済みユーザーが持つ必要があるアクセスのレベルをシステムが決定するメカニズムです。たとえば、データベース管理システムは、特定の特定の個人にデータベースから情報を取得する機能を提供するが、データベースに格納されているデータを変更する機能は提供せず、他の個人にはデータを変更する機能を提供するように設計されている場合があります。承認システムは、質問に対する回答を提供します。

  • ユーザーXはリソースRへのアクセスを許可されていますか?
  • ユーザーXには操作Pを実行する権限がありますか?
  • ユーザーXは、リソースRで操作Pを実行することを許可されていますか?

以下も参照してください。


34

私は認証と承認よりも検証許可を好みます。

私の頭とコードでは、「検証」と「許可」について考える方が簡単です。

  • 同じように聞こえない
  • 同じ略語はありません

認証は検証であり、承認は許可をチェックしています。Authはどちらかを意味しますが、「ユーザー認証」、つまり「ユーザー認証」としてより頻繁に使用されます


2
IMHO検証は、認証よりも少しオープンスコープのようですが、認証は何らかの検証であるように見えますが、すべての検証が認証であるとは限りません...したがって、コンテキストが常に必要だと思います:ユーザーアクセス検証など、認証「彼は本当に男/機械ですか?」の分野で常に発生するようです (私が間違っていて、ネイティブスピーカーではない場合は、私に当たってください。ただし、提供された情報が正確であることを「確認」してください。それに対して、認証は、人/マシンがその人のふりをしていることを知っていることと関係があるようです)
ビーチウォーカー

14

2つの単語は似ているように聞こえ、概念は密接に関連し、一緒に使用されることが多いため、混乱は理解できます。また、前述のように、一般的に使用される略語Authは役に立ちません。

他の人は、認証と承認が何を意味するのかについてすでに説明しています。2つを明確に区別するための簡単なルールを次に示します。

  • 認証entiカチオンを検証し、あなたのIdをenti TY(または信憑、あなたがそれを好む場合)
  • 著者化は、あなたの検証著者アクセスする権利、すなわち、ITYをして、おそらく何かを変更します。

12

これを最も簡単な言葉で説明する画像を作成しようとしました

1)認証とは、「あなたが言っているのはあなたですか?」という意味です。

2)承認とは、「自分がしようとしていることを実行できるようにする必要があるか」という意味です。

これは下の画像でも説明されています。

ここに画像の説明を入力してください

私はそれを可能な限り最良の言葉で説明しようと試み、同じもののイメージを作成しました。


4

認証は、宣言されたIDを確認するプロセスです。

  • 例:ユーザー名/パスワード

通常続い承認あなたはこれとそれを行うことができますことを承認され、。

  • 例:権限

この答えはすでに詳細な説明とともに与えられています。
Sonu patel

3

@Kerrekの答えに追加。

認証は一般化された形式です(すべての従業員がマシンにログインできます)

承認は特殊な形式です(ただし、管理者はマシンでのアプリケーションのインストール/アンインストールしかできません)


1
「できる」という言葉は承認にのみ適用されます。認証はログインとはほとんどまたはまったく関係がありません。多くの点で(ユーザー名/パスワードだけでなく)Boobalanであることを十分に認証できます。私が認証してあなたが誰であるかを知ったら、ログインすることや、私のサイトで何かをすることを許可することはできません。あなたは認証されていますが、ディドリースクワットを行うことはできません。認証について話すときに「できる」という言葉を使用するのは、混乱して正しくありません。
Suamere 2015年

3

認証は、ログインのユーザー名とパスワードを確認するプロセスです。

承認は、何かにアクセスできることを確認するプロセスです。


3
この「答え」は、すでに与えられた答えに何も追加しません。
Ojonugwa Jude Ochalifu

1

定義

認証 -あなたはあなたが主張する人物ですか?

承認 -あなたがしようとしていることを何でもする権限がありますか?

ウェブアプリはGoogleログインを使用します。ユーザーがログインに成功すると、Googleから次のメッセージが返されます。

  1. JWTトークン。これを検証およびデコードして、認証情報を取得できます。トークンはGoogleによって署名されていますか?ユーザーの名前と電子メールは何ですか?
  2. アクセストークン。これは、許可ユーザーに代わってアクセスGoogleのAPIにウェブアプリを。たとえば、アプリはユーザーのGoogleカレンダーイベントにアクセスできますか?これらのアクセス許可は、要求されたスコープ、およびユーザーが許可したかどうかによって異なります。

さらに:

会社には、カスタマーサポートが会社のユーザーを管理できる管理ダッシュボードがある場合があります。カスタマーサポートがこのダッシュボードにアクセスできるようにするカスタムサインアップソリューションを提供する代わりに、会社はGoogleサインインを使用します。

JWTトークン(Googleサインインプロセスから受信)が会社の承認サーバーに送信され、ユーザーが組織のホストドメイン(email@company.com)のG Suiteアカウントを持っているかどうかがわかりますか?その場合、顧客サポートのために作成された会社のGoogleグループのメンバーですか?上記すべてに当てはまる場合は、認証済みと見なすことができます。

次に、会社の承認サーバーがダッシュボードアプリにアクセストークンを送信します。このアクセストークンを使用して、会社のリソースサーバーへの承認済みリクエストを作成できます(たとえば、会社のすべてのユーザーに送り返すエンドポイントにGETリクエストを作成する機能)。


0

Authentication 検証のプロセスです:

  • システム内のユーザーID(ユーザー名、ログイン、電話番号、電子メール...)証明(秘密鍵、生体認証、SMSなど)を提供します。拡張機能としての多要素認証。
  • 使用する電子メールチェック digital signature
  • チェックサム

Authorizationはの次のステップAuthenticationです。これは、リソースに対する権限/役割/特権に関するものです。OAuth(Open Authorization)は承認の例です

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.