2

OpenIDを利用して、Google経由で自分のWebサイトにログインできるようにしようとしています。最終的には訪問者が使用するようになりますが、今のところ、自分のログインのみを確認するためにGoogleとしてハードコーディングされています。

私のコードは次のようになります:

var openId = new OpenIdRelyingParty();

// If we have no response, start
if (openId.Response == null)
{
    // Create a request and send the user off
    openId.CreateRequest("https://www.google.com/accounts/o8/id").RedirectToProvider();
}
else
{
    // We got a response - check it's valid
    if (openId.Response.Status == AuthenticationStatus.Authenticated
        && openId.Response.ClaimedIdentifier == "blah_blah")
    {
    }
}

今、私はいくつかの質問があります:

  1. これを一度実行して、ClaimedIdentifierをキャプチャし、そこに配置しても安全ですか。それはいつも同じでしょうか?

  2. そこにハードコーディングしても安全ですか(秘密ですか?ユーザーがそれを見た場合、それは何かを損なうでしょうか?ユーザーはこれを偽造できますか?GoogleだけがURLで始まるClaimedIdentifiersを引き起こすことができますか?)

ドキュメントを試しましたが、ドキュメントが少しまばらで、これらの質問に対する回答を見つけるのに問題があります。

**編集:**私は自分の質問に答えたかもしれません。ウェブサイトでメタタグ(openid.delegate)を使用して、ログインに厄介なGoogle URLの代わりにブログURLを使用できるようにしました。Google経由でログインすると、ブログURLとしてClaimedIdentifierが返されます。これにより、誰でも私のログインページにアクセスして、自分のGoogleアカウントとしてログインすると、自分のClaimedIdentifierを使用してブログに戻ることができると思います。

  1. ClaimedIdentifierが非常に簡単に偽造されているように見える場合、どのようにユーザーを検証する必要がありますか?
4

2 に答える 2

4

はい、Claimed Identifierの保存は安全であり、その値は秘密ではないため、claimed_id値を含むコードがリークされてもセキュリティ上の問題にはなりません。

はい、常に同じである必要があります。そうでない場合、ユーザーは作成したアカウントへのアクセスを取り戻すことができません。そうは言っても、Googleは、レルムのURLがWebサイトで変更された場合に、すべての新しいclaimed_idをサイトに送信し始めるという点で独特です。レルムが一定である限り、claimed_idも一定です。DotNetOpenIdを使用しているため、デフォルトのレルムはWebサイトのルートURLのみであり、サイトがホストされているURLを変更しない限り、おそらく一定のままです。

あなたが決定したように、claimed_idはそれほど簡単に偽造することはできません。もしそうなら、OpenIDは本当に役に立たない。

于 2009-04-13T21:39:10.607 に答える
1

いろいろいじった後(そして友人に私としてログインしようとしてもらいました)、私は答えを持っていると思います...

私の Web サイトのタグには Google のユーザー名が含まれており、ブログの URL を使用して別のユーザーとしてリクエストにログインしようとすると、失敗したように見えます (Google では、ログインしていた Web サイトではなく、ログインしていた Web サイトに戻されません)。失敗として私を送り返します)。

これにより、ClaimedIdentity として自分の URL を返すこと安全であり、偽造できないなどと思われます。

于 2009-04-13T19:50:38.247 に答える