DotNetOpenId ClaimedIdentifier-硬编码是否安全?

DotNetOpenId ClaimedIdentifier-硬编码是否安全?,openid,dotnetopenauth,Openid,Dotnetopenauth,我正试图利用OpenID允许我通过谷歌登录我的网站。最终它将被访问者使用,但目前它只是硬编码为谷歌,仅用于验证我自己的登录 我的代码如下所示: var openId = new OpenIdRelyingParty(); // If we have no response, start if (openId.Response == null) { // Create a request and send the user off openId.CreateRequest("ht

我正试图利用OpenID允许我通过谷歌登录我的网站。最终它将被访问者使用,但目前它只是硬编码为谷歌,仅用于验证我自己的登录

我的代码如下所示:

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")
    {
    }
}
现在,我有一些问题:

运行一次是否安全,捕获ClaimedIdentifier并将其放入其中。它会永远是一样的吗

硬编码安全吗?这是秘密吗?如果用户真的看到了它,这是否意味着什么?用户可以伪造这个吗?只能由谷歌引起以url开头的ClaimedIdentifier吗

我试过这些文档,但它们有点稀疏,我很难找到这些问题的答案

**编辑:*我可能已经回答了我自己的问题。我在我的网站openid.delegate上使用了一个元标记,这样我就可以使用我的博客url而不是讨厌的Google url来登录。当我通过谷歌登录时,它会返回ClaimedIdentifier作为我的博客url。这让我觉得任何人都可以进入我的登录页面,以他们自己的谷歌账户登录,然后用我自己的ClaimedIdentifier将他们返回到我的博客

当ClaimedIdentifier看起来很容易伪造时,我应该如何验证用户?
在经历了很多混乱之后,有一个朋友试着以我的身份登录,我想我找到了答案

我的网站中的标签包括我的谷歌用户名,如果我尝试以其他用户的身份使用我的博客url登录请求,它似乎在谷歌中失败,没有将我发送回我登录的网站,而不是将我发送回失败的网站


这使我认为,作为ClaimedIdentity返回我自己的url是安全的,不能伪造,等等。

是的,存储声明的标识符是安全的,并且该值不是秘密的,因此,如果其中包含声明的id值的代码被泄漏,这不是一个安全隐患

是的,它必须始终相同,否则用户无法重新获得对他们创建的帐户的访问权。这就是说,谷歌的独特之处在于,如果你的网站的域名发生变化,谷歌将开始向你的网站发送所有新的域名。因此,只要域保持不变,那么声明的\u id也会保持不变。由于您使用的是DotNetOpenId,默认域只是您的网站根URL,因此除非您更改网站承载的URL,否则它可能会保持不变


正如您所确定的,声明的身份证不可能如此容易伪造。如果是的话,那么OpenID真的没用了。

谢谢您的回复-我现在觉得安全了!:D我确信它一定是安全的,否则就像你说的,openID将是无用的,但我不确定所声称的id是否是一次性临时令牌-最初的Google id看起来有点随机。现在一切都清楚了: