2016-10-20 9 views
1

私のREST APIでは、ユーザーは初めてユーザー名とパスワードでログインします。トークンを使用して後続のREST APIリクエストを十分に安全にチェックしていますか?

正常にログインすると、次の形式で応答します。 REST APIへの以降のオン

{ 
    "token": "0c7f8b870675bc61d92baeef1e274c2d31343736393530373230", 
    "expire_on": "2016-11-19T18:05:20+0000", 
    "user_id": 30, 
    "user": {...} 
} 

、私たちは、ユーザを確認するために、ヘッダーにtokenを送信します。 token52文字です。

十分安全ですか?

さらに安全を確認するためにtokenuser_idを送信する必要がありますか?

答えて

0

トークンをどのように生成するかによって異なります。 誰かがどのように生成されたかを推測できれば、偽のものを作成することができます。 これがサーバーに保存されているランダムな文字列で、要求ごとにサーバーの存在を確認すると安全です。 ステートレストークンの現在の最適なソリューションはJWTです。見てくださいhttps://jwt.io/

0

あなたの認証層を実装しましたか?私は、Oauth2仕様を見てみることをお勧めします。また、grant_typeがパスワードである場合は、このセクションに興味があります。あなたはそれに従うならば、それだけでアクセストークンを返すために安全になります。

5.1. Successful Response

認証サーバは、アクセストークンとオプション リフレッシュトークンを発行し、次 のパラメータを追加することによって、応答を構築します200(OK) ステータスコード:

access_token 必須のHTTP応答のエンティティ本体に送信する必要があります。許可サーバーによって発行されたアクセス・トークン。

token_type が必須です。 セクション7.1に記載されているように発行されたトークンのタイプ。大文字と小文字は区別されません。

expires_in 推奨。アクセストークンの存続期間(秒単位)。 の例では、値「3600」は、応答トークンが に応答が生成されてから1時間で期限切れになることを示します。 省略した場合、認証サーバは、他の手段を介して 有効期限を提供するか、またはデフォルト値

にドキュメント化する必要があります。

+0

自分のクライアントと自分のサーバーを認証するのにOauthを使用する必要がありますか?私はOAuthがクロスアプリケーションのログインを認証すると考えましたか? – moeseth

+0

@metheth Oauth2は異なるgrant_typeを提供します。クロスアプリケーションが使用しているgrant_typeは「認証」と呼ばれます。 oauth2の仕様には、アクセストークンのユーザー名とパスワードを直接交換するために使用できる「パスワード」grant_typeも含まれています。 oauthサーバーが既にある場合は、どのように使用するか少し注意してください。詳細はこちらをご覧ください:http://oauthlib.readthedocs.io/en/latest/oauth2/grants/password.html https://aaronparecki.com/2012/07/29/2/oauth2 -implified –

+0

@moesethこのリソースも役立ちます:https:// apigility。org/documentation/auth/authentication-oauth2のユーザ名とパスワードのアクセスセクション –

関連する問題