10

開発者がそれを使用してアプリを作成できるように、REST API として公開したい Web ベースのサービスを作成しています。開発者がユーザー アカウントを作成/管理し、API を介して認証できるようにしてほしい。これをどのように処理しますか?OAuthか何か?

これにはpython、flask、mongodbを使用しています。

4

1 に答える 1

11

OAuth 2(OAuth 1よりもはるかに望ましい)を使用して、次のことに決めました。特に、リソース所有者のパスワードクレデンシャルフローを使用しています。それをRESTfulサービスに統合する方法については、次のアイデアがあります。

  • 権限のないユーザーが最初のリソースにアクセスすると、401が返されます。401の本体には、が付いた単一のリンクが含まれていrel=oauth2-tokenます。(リンクを通知する方法はメディアタイプによって異なります。HALを使用Linkしていますが、ヘッダーだけを使用することもできます。)
  • ユーザーが認証した後、ユーザーは最初のリソースにAuthorization戻り、OAuth2プロセスから返されたベアラートークンをヘッダーに送信します。この時点で、すべての通常のリンクが使用可能な200を返します。

アカウントの作成は公開していませんが、公開したい場合は、最初のリソースで権限のないユーザーが利用できる別のリンクを使用して公開します。そのリンクはrelアプリケーションに固有であるため、カスタムがあります。rel=http://rels.myapi.com/users

優れたRESTful設計は、これを使用したリンクがreleghttp://myapi.com/usersを指し、APIのコンシューマーがPOSTそのエンドポイントを実行することを示します。これLocationにより、新しく作成されたユーザーリソースを指すヘッダーが付いた新しいユーザーリソースが返されますhttp://myapi.com/users/username。(もちろん、ユーザーリソース自体は別のものrelであり、単一のユーザーリソースと複数のユーザーコレクションリソースを区別します。)

于 2012-07-16T07:49:37.587 に答える