私は、開発者がそれを使ってアプリケーションを作成できるように、REST APIとして公開したいWebベースのサービスを作成しています。開発者にユーザーアカウントを作成/管理し、APIを通じて認証できるようにしたい。これをどう扱う? OAuthなど何か?REST APIの認証を実装する方法は?
私はこのためにpython、flask、mongodbを使用しています。
私は、開発者がそれを使ってアプリケーションを作成できるように、REST APIとして公開したいWebベースのサービスを作成しています。開発者にユーザーアカウントを作成/管理し、APIを通じて認証できるようにしたい。これをどう扱う? OAuthなど何か?REST APIの認証を実装する方法は?
私はこのためにpython、flask、mongodbを使用しています。
OAuth 2(これはOAuth 1よりもはるかに優れています)を使用して、次のように解決しました。特に、我々はresource owner password credentialsフローを使用しています。権限のないユーザーが打ったとき
rel=oauth2-token
で、401は401のボディは、単一のリンクが含まれて返されます。私たちのRESTfulなサービスに統合する方法については、ここでの考え方です。 (リンクの信号はあなたのメディアタイプによって異なりますが、を使用していますが、Link
ヘッダーのみを使用することもできます)。Authorization
ヘッダーにベアラを送りますトークンはOAuth 2プロセスから返されました。この時点で、すべての通常のリンクを利用できる状態で200を返します。アカウント作成は公開していませんが、その場合は、最初のリソースで権限のないユーザーが利用できる別のリンクを使用します。そのリンクはアプリケーションに固有のものなので、カスタムrel
となります。 rel=http://rels.myapi.com/users
良いRESTfulデザインは、このrel
とのリンクが、例えば、を指していることを示します。 APIのコンシューマがそのエンドポイントに対してPOST
を実行し、そのエンドポイントに新しく作成されたユーザリソースを指し示すLocation
ヘッダを有する新しいユーザリソースを返す。 http://myapi.com/users/username
。 (ユーザリソース自体はもちろん、特異ユーザリソースと複数ユーザコレクションリソースとを区別する別のrel
である。)