2009-07-07 28 views
0

ユーザーが自分のDNSに自分のIPアドレスを指定できるようにするWebベースのアプリケーションがあり、HTTPホストヘッダーに表示されるドメイン名に基づいてコンテンツが提供されます。私はこれが実際のHTTPサーバー(Apache)ではなく、アプリケーションによって行われていることを指摘しておきます。これは、ブランド変更されたアプリです。私が持っている問題は、ユーザーが提供されたページのフォームを使ってログインできるようにして、何らかの形でユーザーのドメイン内に留まることです。セキュリティを必要としない限り、これは簡単です。私はこの問題を解決するためにすべてのドメインにSSL証明書をインストールしなければなりません。今はSSL証明書がインストールされたドメインにフォームを送信することで対応できますが、ブラウザのセキュリティにより、元のドメインに必要なCookieを正確に設定することはできません。複数のドメインに安全なログインを許可する方法

多くのSSL証明書をインストールする必要のないアプリを使用してユーザーを安全にログインできる方法を知っている人はいますか。私は、リダイレクトや他のメカニズムを使って複雑な方法を考えることができますが、それはきれいではありません。私は安全なURLとリダイレクトに提出する気にしない、それは単にクッキーを行うことができない設定です。

答えて

2

一般的なやり方は、URL内のデータを渡すことです。 Facebook Connect does this。 URL内のセッショントークンを使用して、あるドメインから別のドメインにリダイレクトし、要求が他のドメインに入ったときにトークンを確認することができます(おそらくCookieに変換します)。編集:MSDN articleにリンクしているFacebookははるかに詳細を持っています。

3

私はあなたが新たに作成されてAuthKey

valid_auth_key(key) 
    hash = key[-hash_size:] 
    b64data = key[:-hash_size] 
    data = base64decode(b64data) 
    data_hash = md5(data + secret) 
    if data_hash != hash: 
     return false # invalid hash 
    data_parts = data.split('|') 
    user = data_parts[0] 
    password = data_parts[1] 
    expires = data_parts[2] 
    if now > expires: 
     return false # url expired 
    return true 
を渡す

は、サーバー、サーバー2 1.

create_auth_key 
    expires = time + expire_time 
    data = username + '|' + password + expires 
    secret = 'my secret key' 
    hash = md5(data + secret) 
    key = base64(data) + hash 

に認証キーを作成します...次のメソッドを使用する前にこれをやりました

これは素早く汚れていますが、URL経由で渡される単純なデータのみに依存しています。欠点は、特定のURLがログインに必要なすべてであり、誰かがある期間そのURLを共有できるということです。また、有効期限がサーバー間の時間差以下であることを確認する必要があります。

関連する問題