2017年5月20日土曜日

Oauth 2.0 Mac Token

Oauth 2.0のMAC Tokenについて調べたのでまとめる


  • Message Authentification Codeの略
  • メッセージに署名をつけて、認証しようよということ
  • Bearer Tokenと MAC Tokenがある
  • Bearer Tokenの方がシンプルで見かけることが多い
  • Bearer か MACかはクライアントは決めれない。サーバが決める。
  • MAC Tokenでトークンが渡される時のレスポンス


HTTP/1.1 200 OK
  Content-Type: application/json
  Cache-Control: no-store
  {
  "access_token":"SlAV32hkKG",
  "token_type":"mac",
  "expires_in":3600,
  "refresh_token":"8xLOxBtZp8",
  "mac_key":"adijq39jdlaska9asud",
  "mac_algorithm":"hmac-sha-256"
  }

  • MAC Tokenではリソースへのアクセス時、以下情報をヘッダに付加する必要あり。

Authorization: MAC id="h480djs93hd8",  ts="1336363200",  nonce="dj83hs9s",  mac="bhCQXTVyfj5cmA9uKkPFx1zeOXM="

  • idはトークン取得時にもらった、Mac Key Identifireかaccess_token。
  • tsはクライアントで付け加えるタイムスタンプ 
  • nonceはクライアント側で生成し、付け加えるユニークな文字列、id, ts, nonceの組み合わせがユニークにならないといけない
  • macは以下方法で生成

ts + nonce + http method + uri + host + port + ext or Authorized(optional) の文字列を生成して、mac_algorithmで指定されているアルゴリズムでhashの生成したもの

参考

http://stackoverflow.com/questions/31209525/oauth-2-0-bearer-tokens-vs-mac-tokens-why-not-using-mac-tokens

https://dzone.com/articles/oauth-20-bearer-token-profile

https://tools.ietf.org/html/draft-hammer-oauth-v2-mac-token-05

https://www.slideshare.net/ritou/oauth-20-mac-authentication 日本語

0 件のコメント:

コメントを投稿