私はXMLを使用してWebアプリケーションのユーザーとデータを操作するためのAPIを作成しています。 POST XMLの場合、ユーザーなどを作成できます.2足のOAuthソリューションを使用して、APIリクエストを保護し、検証します。しかし、この問題はセキュリティの面ではありませんが、ユーザー名とパスワードを入力せずにユーザーがAPIリクエストからログインできるようにするためのものです。ユーザーログインのための安全な一時アクセストークンを作成する、これは十分ですか?
ステップ1、パートナーはXML APIを使用してユーザーを作成します。成功すると、システムは新しいID「/ user/99」を含むパスを返します。
UserID int FK
AccountID int FK
Token string
Expiration date
Used bit
ユーザーIDとアカウントIDに関連しています
ステップ2は、パートナーはユーザー/ログイン/ 99への要求が、これはここで、私のデータベースに新しい「ログイントークン」を作成します関連するプロパティがあります...
トークンは、ランダムに生成されたGUIDの最初の20文字で、ダッシュが削除され、すべての文字がToUpper()に設定されています。
有効期限はDateTime.Nowから30秒です。
Used = false
ステップ3は、パートナーが(APIは異なるドメインにある)システムのURLの知識を持って、彼らは今、このようにそれにPOSTを行うことができます。
HTTP :この時点で、我々は確認して//otherdomain.webapp.com/core/login/ [ここguidを挿入]今
、「otherdomainの」部分は、アカウントごとに一意であることを行っている。
を見上げて提供されたGUIDに基づいたLoginTokenは、サブドメインと一致するアカウントを使用する場合、 (30秒以内に)有効期限切れではなく、 'Used'はfalseに設定され、ユーザーはログインし、Usedはtrueに設定され、ホームページまたは別のURLにクエリー文字列で提供されます。
基本的に、完全に登録されたアプリケーションと秘密鍵とOAuth用のすべてのジャズが必要です。ログインできるのはGUIDを要求するだけですが、1つの時間と30秒のウィンドウ内で動作します。最初のログインURLの知識はとても良いですか?
最終的に誰かが何とかGUIDとURLを30秒以内に知ることができれば、ログインにハイジャックすることができますが、そのチャンスは何ですか?
さらに、セキュリティを強化するために追加することはできますか?