質問

APIの構築を検討しており、APIへのアクセスを管理するためにoauthを検討していましたが、私がしていることは、企業がデータにアクセスしてサイトに組み込むことができるb2bシステムです。最初はb2cはありません。

したがって、oauthは私にとって適切なツールではないようです。キーベースのシステムの構築に関するソースを探していましたが、何も見つかりませんでした。

すでに利用可能なものはありますか? ユーザーが送信したデータなどのハッシュを作成するのが最善ですか?

役に立ちましたか?

解決

必要なのは、ユーザーを一意に識別するものだけです... UUIDまたはUUIDのハッシュを使用するだけです。

このIDが安全なチャネルを介して渡されることを確認してください。安全でないチャネルを介して渡す場合は、HTTPダイジェスト認証と同様にIDを保護する方法を実装する必要があります。

他のヒント

ほぼすべてのWeb 2.0サイト/サービスをご覧ください。これらはすべて、さまざまな程度で認証を行い、APIキーを管理しています。 Flickr、Twitter、Githubなど。

要件に応じて、Web APIの世界では、パートナー/開発者にAPIキーを提供し(識別)、呼び出しに署名することを要求する(認証)ことは非常に標準的です。署名を指定する方法はたくさんあります。最近ではかなり一般的なものがあります。呼び出しのすべてのパラメーター、タイムスタンプ(+/- 5分の変動)、共有シークレットを取得し、SHA-1またはMD5(SHA-1を推奨)を使用してハッシュします。

これを自分で実装するか、あなたのためにパートナーを見つけることができます(いくつかあります)。

ここで提案されている一般的なアプローチ(APIキーと現在の時刻を含むハッシュを使用する)はすべて良いです-「パスワード」を含めるよりも確かに良いです。メッセージ内。

ただし、これを行う暗号の標準的な方法があります。 HMACと呼ばれる操作。より標準/堅牢/安全なものが必要な場合は、見る価値があります。

最後に、明らかに「ゴールドスタンダード」があります。セキュリティオプションから-デジタル証明書を使用して、すべてのリクエストに署名するか(計算コストが高くなる可能性があります)、最初のリクエストに署名して制限付き使用セッションキーを生成します(たとえば、1つのAPIのみ、60分後に有効期限が切れます)。

別の方法として、トランスポート層に双方向SSLを使用し、それをアプリケーション/ API内で単純に信頼することもできます。

本当にあなたがそれをどれだけ安全にしたいかに依存します...:]

ユーザーが送信したデータを使用するだけではありません。APIキーが推測可能な状況になる可能性があるためです。一般に、ユーザーによって生成されたデータを取得し、それを比較的一意な(つまり、現在のシステム時間)データと組み合わせて、SHA-1または何かを使用してハッシュします。明らかにSHA-1ハッシュにすることを望み、それをキーとして使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top