API認証方法一覧

2924 ワード

Open api authentication
  • Amazon
  • DigitalOcean
  • Webchat
  • Weibo
  • QQ

  • Amazon Web Services
    HMAC Hash Message Authentication Code
    コア構想
  • 【Client】データ
  • を何らかの順序で組み合わせる
  • 【Client】private key暗号化組合せデータを用いてHMAC
  • を生成する
  • 【Client】サーバ側にデータを送信します.
  • ユーザ識別情報、例えばAPI Key、Client ID、User ID;あなたが誰だかを示すために
  • Timestamp,重複攻撃を避ける
  • 生成HMAC
  • その他のデータ
  • 【Server】すべてのデータを受信
  • 【Server】Timestamp
  • をチェック
  • 【Server】ユーザー識別情報を使用してprivate key
  • に問い合わせる
  • 【Server】すべてのデータからHMAC
  • を取り出す
  • 【Server】クライアントと同じ順序でデータ
  • を組み合わせる
  • 【Server】private key暗号化組合せデータを用いてHMAC
  • を生成する
  • 【Server】一致一致し、要求が正当であると判断した
  • ヒント:private keyは転送されません
    http://docs.aws.amazon.com/general/latest/gr/sigv4-create-string-to-sign.html
    http://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.html
    http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/
    Amazon Simple Storage Service (One of AWS)
    Developers are issued an AWS access key ID and AWS secret access key when they register.
    The Amazon S3 REST API uses the standard HTTP Authorization header to pass authentication information.
    Authorization: AWS AWSAccessKeyId:Signature

    開発者が登録すると、AWSアクセスキーIDとAWS secretアクセスキーが得られます.要求認証について、AWSAccessKeyIdはsignatureを計算し、どの開発者が開始した要求であるかを識別するために使用されます.
    Signatureは、要求において選択された要素のRFC 2104 HMAC−SHA 1アルゴリズムによって生成される.
    Authorization = "AWS" + " " + AWSAccessKeyId + ":" + Signature;
    
    Signature = Base64( HMAC-SHA1( YourSecretAccessKeyID, UTF-8-Encoding-Of( StringToSign ) ) )

    http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html#ConstructingTheAuthenticationHeader
    DigitalOcean
    https
  • まずユーザ名パスワードを使用して管理プラットフォーム
  • にログインする.
  • 管理プラットフォームにおいて、OAuth Token(実際にはUsernameとPasswordに代わる)
  • を生成する
  • api要求HTTPヘッダにOAuth Token
  • を携帯する
    curl例
    curl -X $HTTP_METHOD -H "Authorization: Bearer $TOKEN" "https://api.digitalocean.com/v2/$OBJECT"
    
    curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" -d '{"name": "example.com", "ip_address": "127.0.0.1"}' -X POST "https://api.digitalocean.com/v2/domains"

    https://developers.digitalocean.com/documentation/v2/#authentication
    Webchat
    微信開発インタフェース呼び出し証明書
    ステップ
  • 【Client】アクセス_tokenを取得し、データを送信する
  • appid
  • secret

  • 他のapi呼び出しにはaccessが必要です.token(access_token有効期間は2時間、タイミング取得が必要)
  • http://wiki.connect.qq.com/openapi呼び出しの説明_oauth2-0
    Weibo
    ログイン権限を必要としないapiの直接使用
    OAuth 2プロトコルを使用してアクセスを取得するにはログイン権限が必要です.token、リクエスト送信時にaccessを提供するtoken
    http://open.weibo.com/wiki/認証メカニズムの説明
    QQ
    OAuth 2プロトコル
    http://wiki.connect.qq.com/oauth2-0概要