私はAPIを持っています。それらのいくつかは、OAuthによるサードパーティアプリケーションからのアクセスに制限されています。
Webアプリケーションもあります。ユーザーはログインして自分の個人情報を見ることができます。
APIはWebアプリケーションからも呼び出されます。私の質問は、セキュリティ対策を講じてAPIにアクセスするための良い方法は何ですか。
1. Third party applications -> OAuth
2. My own web application -> ???
私のWebアプリケーションは認証にセッションIDを使用しています。HTTPヘッダー付きのセッションIDを転送するのは良い方法かもしれませんが、自信がありません。
例として...
$ curl -X PUT \
-H "X-Sample-Application-Id: "My own web application's ID" \
-H "X-Sample-Session-Token: yeoql2dvn7whpm4tbe61viscv" \
APIがこのリクエストを受信した場合は、oauthの代わりにセッションを認証に使用してユーザーを識別します。
どんな助けでもありがたいです。
ありがとう、
..同様の質問を見つけました
Update1
JWT(Json Web Token)が良いと言う人もいます。
https://auth0.com/blog/2014/01/07/angularjs-authentication-with-cookies-vs-token/
http://blog.mitsuruog.info/2014/08/jwtjson-web-tokenwebapicredential.html
Update2
OAuthの「リソース所有者のパスワード資格情報」を使用できる場合があります
https://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/709.html
または...「クライアント資格情報の付与」の方がはるかに優れています。
これについては少し詳しく説明します。これは良い質問であり、周りには多くの混乱があるためです。ここで我慢してください。
保護しようとしているAPIが、サードパーティの開発者ではなくサーバー側アプリの個人によって独占的に使用される場合は、HTTP基本認証を使用してAPIサービスを保護することを強くお勧めします。
これが機能する方法は非常に簡単です。
APIサービスに対して認証するときは、HTTPAuthorizationヘッダーでそれらのAPI資格情報を指定して自分自身を識別します。これが使用してどのように見えるかcurl
です:
$ curl --user my-api-keyid:my-api-key-secret https://api.myservice.com/blah
基本認証の優れている点は次のとおりです。
さて、(サーバー側のアプリケーションだけでなく)さまざまな環境からユーザーを認証するAPIサービスを構築している場合は、実際にはOAuth2プロトコルを使用する必要があります。
これはそれが設計されたものです。
OAuth2プロトコルはさまざまな方法でユーザーを認証できますが、その結果、非常に複雑になります。人気のあるライブラリなどを使用している場合でも、サイトにOAuthを追加するのは難しい場合があります。
OAuthの仕組みは次のとおりです(簡単な内訳)。
パスワード付与
OAuthのパスワードフローでは、ユーザー名/パスワードをアクセストークン(通常はJWT)と交換します。次に、HTTP Authorizationヘッダーのアクセストークンを使用して、APIサービスで自分自身を識別します。
これは、ほとんどの人がAngular / ReactやモバイルアプリでSPAを構築するときに行うことです。
クライアント資格情報の付与
クライアント資格情報フローでは、APIキー(基本認証と同様)をアクセストークンと交換します。次に、HTTP Authorizationヘッダーのアクセストークンを使用して、APIサービスで自分自身を識別します。
これは、OAuthを使用してサーバー側アプリを構築するときに人々が行うことです。
暗黙の助成金
このフローは、Facebookなどの場所にログインしたときに表示されるものです。ボタンをクリックすると、他のサイトにリダイレクトされてアクセス許可を認証/承認します。最後に、自分を識別するために使用するアクセストークンを使用してメインサイトに戻ります。これはAPIサービスには理想的ではありません。
承認コード付与
このフローは暗黙のフローとまったく同じですが、認証コードを取得し、それを自分自身を識別するために使用するアクセストークンと交換する点が異なります。これはAPIサービスには理想的ではありません。少し安全です。
ユースケースのためにOAuthを使用することを計画している場合は、Stormpathなどの認証プロバイダーを確認することを強くお勧めします。彼らはこれらの多くを自動化し、OAuthに関する多くの複雑さを解決します。
それ以外の場合は、基本認証を試してみてください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加