Webサービスが広がるにつれて、既存のクライアントアプリケーション同士が次々につながるようになってきました。
Instagramで投稿した内容をブログにも掲載させるなど、その利便性を実感している方も多いのではないでしょうか。
しかし、クライアントアプリケーションがつながることによって、ユーザーの意図しないところで個人情報にアクセスされる危険性が指摘されています。
クライアントアプリケーションを便利にかつ、セキュアに利用できる仕組み「OAuth」について見ていきましょう。
「OAuth(オーオース )」とは、クライアントアプリケーションにあるユーザーの個人情報にアクセスする権限を、他のアプリケーションにセキュアに受け渡す仕組みです。
「OAuth」を利用すると、ユーザーは外部サービスに対して、最低限必要なデータにだけアクセスする権限を委譲することができます。パスワードを教える必要もなければ、認可していないデータにアクセスされる心配もありません。
「OAuth」は、アクセストークンを使用することによって、クライアントアプリケーション間でのデータ共有を実現しています。
ユーザーは、外部サービスに受け渡すデータの範囲を指定することや、アクセストークンの有効期限を設定することも可能です。
「OAuth」の基本的な仕組みについて触れる前に、「OAuth」に登場する3つの要素について整理します。
1つ目の要素は、ユーザーのデータを保存している「OAuth Server」です。ユーザーが認可したデータを外部サービスに受け渡す役割を担い、「OAuth」をサポートしたAPIを提供しています。
2つ目の要素は、「OAuth Server」のAPIを利用する側のクライアントアプリケーションで、「OAuth Client」と呼ばれます。「OAuth Client」は、「OAuth Server」からデータを受け取り、変更や追加などを行います。
3つ目の要素は、アクセストークンを発行し、クライアントアプリケーションにアクセス権限を付与する「Resource Owner」です。許可していたアクセストークンは、ユーザーの要望によって無効化することもできます。
「OAuth Client」が「OAuth Server」のデータにアクセスするには、まずはじめに「OAuth Server」に対してクライアント登録を行う必要があります。
次に、「Resource Owner」から、アクセストークンを生成、発行してもらう必要があります。
データにアクセスする認可を受けた「OAuth Client」は、「Resource Owner」から発行されたアクセストークンを添えて、「OAuth Server」にデータの受け渡しを要求します。
「OAuth Server」は、アクセストークンをチェックし、認可されているデータだけを「OAuth Client」に渡します。
一度受け取ったアクセストークンは、無効化されるまでは有効なトークンとして認識され続け、何度でも「OAuth Server」にアクセスすることが可能です。
アクセストークンを持たないクライアントは、「OAuth Server」にアクセスすることができないため、高いセキュリティを維持することができるといえるでしょう。
OAuthは、APIを守りながら、クライアントアプリケーションを連携させることができる技術です。
Webサービスの広がりや、クライアントアプリケーション間の連携の増加に伴い、今後ますます必要性が高まっていくことが予想されます。
(画像はphoto ACより)