2009-04-13 3 views
2

J'essaie d'utiliser OpenID pour me permettre de me connecter à mon site via Google. Finalement, il sera utilisé par les visiteurs, mais pour l'instant, il est simplement codé en dur comme Google pour vérifier mon propre login uniquement.DotNetOpenId ClaimedIdentifier - Est-il sûr de coder en dur ceci?

Mon code ressemble à ceci:

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") 
    { 
    } 
} 

Maintenant, j'ai quelques questions:

  1. Est-il sûr d'exécuter cette fois, la capture ClaimedIdentifier et le mettre là-dedans. Est-ce que ce sera toujours pareil?

  2. Est-il sûr de coder en dur là (est-ce secret? Si un utilisateur ne le voir, serait-ce comprimise quoi que ce soit? Est-ce qu'un utilisateur forger ce? Ne peut causer Google ClaimedIdentifiers commençant par leur URL?)

J'ai essayé les documents, mais ils sont un peu clairsemés et j'ai des difficultés à trouver des réponses à ces questions.

** Modifier: ** J'ai peut-être répondu à ma propre question. J'ai utilisé une méta-balise sur mon site web (openid.delegate) pour que je puisse utiliser mon URL de blog à la place d'une mauvaise URL Google pour me connecter. Lorsque je me connecte via Google, elle renvoie ClaimedIdentifier comme URL de mon blog. Cela me fait penser que n'importe qui pourrait aller à ma page de connexion, se connecter comme leur propre compte Google et il les retournerait sur mon blog avec mon propre ClaimedIdentifier.

  1. Comment suis-je supposé valider un utilisateur lorsque ClaimedIdentifier semble si facilement falsifié?

Répondre

4

Oui, stocker l'identifiant Réclamé est sûr et que la valeur n'est pas secret, ce n'est pas un compromis de sécurité si ce code avec la valeur de claim_id a été divulgué. Oui, il doit toujours être identique sinon les utilisateurs ne peuvent pas accéder de nouveau aux comptes qu'ils ont créés. Cela étant dit, Google est unique en ce sens que si l'URL du domaine devait changer pour votre site Web, Google commencerait à envoyer tous les nouveaux identifiants de réclamations sur votre site. Tant que le royaume reste constant, le claim_id le sera aussi. Puisque vous utilisez DotNetOpenId, le domaine par défaut est juste l'URL racine de votre site web, donc il restera probablement constant à moins que vous ne changiez l'URL de votre site.

Comme vous l'avez déterminé, le claim_id ne peut pas être facilement falsifié. Si c'était le cas, OpenID est vraiment inutile.

+0

Merci pour la réponse - Je me sens plus en sécurité maintenant! : D J'étais sûr qu'il devait être sûr (sinon comme vous le dites, openID serait inutile), mais je ne savais pas si le claim_id était un jeton de temp ponctuel (le Google original semble un peu aléatoire).Tout est clair maintenant :) –

+0

Ouais j'ai couru dans cette URL gotcha avec google. – UpTheCreek

1

Après beaucoup de déconner (et d'avoir un ami essayer de vous connecter comme moi), je pense avoir la réponse ...

L'étiquette dans mon site comprend mon nom d'utilisateur Google, et si je tente de Connectez-vous en tant qu'utilisateur différent pour une demande en utilisant mon URL de blog, il semble échouer (dans Google ne pas me renvoyer au site Web que je me connectais, plutôt que de me renvoyer comme échoué).

Cela me fait penser que le retour de mon propre URL comme ClaimedIdentity est sûr, ne peuvent pas être truquées, etc., etc.

Questions connexes