- 「OAuth」は、従来のBasic認証と比べて安全にアカウントにアクセスできます。
- OAuthでは、ログインページでの認証の後にユーザーがアプリに与える権限を細かく設定します。
- その後は、アプリにアクセストークンが記録されるので、直接のパスワード情報は記憶しません。
1. Basic認証とOAuthの違い
「OAuth」って何なの?
これまでのメール設定と何が違うの?
「OAuth(オー・オース1)」は、アカウントのデータを範囲を限定してアクセスさせるための仕組みです。
- 従来のメール設定は、「Basic認証」は、ユーザー名とパスワードを直接使用する認証方法です。
この認証では、ログインしたらすべてのデータにアクセスできました。 - 一方、OAuthは、ログインページで認証した結果をアクセストークンとして記録します。
アクセスできるデータ範囲は、ログイン時に許可した範囲に限定されます。
OAuthは「ウェブのためのバレーキー」と表現されています。バレーキーとは、車の一部の機能だけを使えるように制限された鍵のことです。OAuthを使うと、ウェブサービスの開発者は、ユーザーに代わってウェブサービスと連携できるようになります。その際、ユーザーは異なるサイト間でパスワードなどの個人情報を共有する必要がありません。
For immediate release: OAuth Core 1.0 Specification released at Internet Identity Workshop « OAuth
1-1. 従来のBasic認証のメール設定
例えば、iPhoneのメールアプリの場合は、設定からメールアカウントを追加します。
このときに「その他」を選ぶとBasic認証の設定になります。
この方法は、パスワード情報が設定にそのまま残るため、他人に見られてしまうリスクがあります。
2. OAuthでのメール設定
OAuthの特徴は、認証手続きの途中でサービスプロバイダのアクセス権限の確認が表示されることです。
このアプリがあなたの情報にアクセスすることを許可しますか?
(1/1 アプリ中)iOSが、次の操作を行う許可を求めています。
- メール、連絡先、カレンダー、タスクの同期と、メールの送信を行う
- iOS にアクセス権を与えたデータへのアクセスを管理します
- 基本プロフィールの表示
OAuthでは、「サービスプロバイダ (OAuth Provider)」と「クライアントアプリ (OAuth Consumer)」が連携をして、ユーザー情報を管理します。
- クライアントアプリがサービスプロバイダに認可要求を送信する
- サービスプロバイダのログインページにリダイレクト
- サービスプロバイダは、ユーザーに対して、クライアントアプリがアクセスを求めているデータについて説明し、許可を求めます。
この場合、Outlook.comがサービスプロバイダで、iOSのメールアプリがクライアントです。
2-1. アクセストークンを受け取る
この「許可」って、背後では どんな処理が行われているの?
ユーザーの許可が得られたら、サービスプロバイダはクライアントアプリに「認可コード」を送信します。
すると、クライアントアプリは受け取った認可コードを使って、今度はサービスプロバイダに「アクセストークン」を要求します。
サービスプロバイダがアクセストークンを発行すると、クライアントアプリは許可された範囲のアクセスデータを閲覧・編集できるわけです。
メールアプリ以外でも、ウェブサービスでの「Googleでログイン」なども同じOAuthです。
3. 「認可」と「認証」の違い
「OAuth」は、特定の企業や組織に限定されないオープンな「認可」の仕組み(プロトコル)です。
「認証(Authentication)」と「認可(Authorization)」は似ていますが、ちょっと違います。
これにより、ユーザーは自分のアカウント情報のすべてを直接共有することなく、第三者アプリケーションに特定の権限を安全に与えることができます。
スマートフォンの使用でも、認証と認可は区別して利用されています。
- 指紋認証や顔認証でロックを解除するのは、まさに「認証」です。
- 一方、アプリごとに、連絡先やカメラへのアクセス権限を設定するのが「認可」に相当します。
(補足)
- OAuth (pronounced “Oh-Auth”), summarized as “your valet key for the web,” enables developers of web-enabled software to integrate with web services on behalf of a user without requiring the user to share private credentials, such as passwords, between sites. – For immediate release: OAuth Core 1.0 Specification released at Internet Identity Workshop « OAuth