Pergunta

Estou começando a duvidar seriamente da comunidade OpenID, apesar do fato de que ela funciona.

Estou atualmente avaliando o OpenID como um serviço de autenticação para o site 'Este' e, embora as promessas sejam ótimas, não consigo fazer com que funcione. E estou realmente perdido.

Peço à comunidade SO que me ajude aqui. Dê -me respostas e mostre -me exemplos para que eu possa aproveitar isso da maneira como deveria ser.

Meu cenário é muito típico. Quero autenticar os usuários através de um domínio específico do Google Apps. Se você tiver acesso a este domínio do Google Apps, terá acesso ao meu aplicativo da web.

Onde me perco, são todos os pré -requisitos e dependências envolvidos.

  1. O que é XRD?
  2. O que é Yadis?
  3. Por que eu preciso de XRD e Yadis?
  4. O que preciso fazer para implantar autenticação OpenID no meu site?

Além disso, isso é realmente importante para mim.

Quando eu faço login para assim, uso minha conta do Google. Quando clico no botão de login, é apresentado esta página de confirmação. Onde estou concedendo o direito de usar minhas credenciais da conta do Google.

De alguma forma, o Google sabe que é "Stackoverflow.com", está me perguntando se não há problema em fazer o login. E desejo saber que tipo de controle eu tenho sobre este pequeno texto. Pretendo implantar o OpenID em vários domínios diferentes, mas preferiria se todos funcionariam sem precisar ser configurados individualmente com parâmetros especiais, como as chaves da API secreta e o que não. No entanto, não sei ao certo se isso é um pré -requisito do OpenID, essa ou a API de login federada que o Google fornece.

Foi útil?

Solução 3

Na verdade, eu encontrei uma solução para o meu problema e, o que, o que é muito simples, era muito simples. Ainda não entendo XRDs e Yadis, mas estou alavancando com bastante facilidade.

O que você deseja, e o que você está procurando é o código para fazer as coisas do OpenID "Relaying Party". Isso é "você" como consumidor de provedores OpenID. Você insere um endpoint OpenID e pronto, você ativou o site OpenID, este código ilustra isso na prática.

// using DotNetOpenAuth
var openid = new OpenIdRelyingParty();
var response = openid.GetResponse();
if (response == null)
{
    // Google account end point (works fine)
    var googleID = "https://www.google.com/accounts/o8/id";
    // Google hosted account end point
    //  https://www.google.com/accounts/o8/site-xrds?hd=mydomain.com
    // I was unable to test this, but I was running my RP (this code)
    // from localhost and it's quite possible that a hosted account RP
    // has to return to the same domain.
    // It went fine, but crashed with a "Unable to resolve mydomain.com" error
    // once I logged in.
    openid.CreateRequest(googleID).RedirectToProvider();
}
else
{
    switch (response.Status)
    {
        case AuthenticationStatus.Authenticated:
            // Success
            // to allow persistance across sessions
            // you'll have to track the "claimed identifier"
            // some OpenID providers allow you to get an email address through
            // extensions but this is not always possible.
            // the claimed identifier is typically your safest bet
            // and it's a big URL which uniquely identifies the guest
            // as a specific user, however, you know very little about this user
            // which is a good thing becuase you don't have to give out personal or
            // sensitive information to start using a service.
            break;

        default:
            // Something went wrong, check Status property
            break;
    }
}

Enquanto eu estava descobrindo isso, tive a impressão de todas as especificações. lá fora, eu deveria hospedar meu próprio "provedor OpenID", que fazia parecer que eu deveria lidar com contas ou parte do processo. Na realidade, tudo o que eu precisava fazer era isso.

Solicite que o URL, ou se você receber uma solicitação OpenID em resposta. Verifique se essa solicitação contém informações de login válidas.

Outras dicas

A resposta para alterar a cor da área deixada para trás se você animar uma barra de uinavegação é

self.navegationcontroller.View.backgroundColor= [Uicolor Redcolor];

Ok, você tem muitas perguntas sob um cabeçalho lá. Deixe -me ver se consigo quebrá -lo.

XRD e Yadis:

"Yadis" era o nome para a descoberta de serviços do OpenID - a parte que você leva de "meu OpenId is Exemple.com" para "O servidor autoritário do meu OpenID está em OpenID.example.com/Server e suporta V2 com extensões de machado. " XRDS é o esquema XML que mantém essas informações.

(O fato de que o OpenID (um padrão que desenvolvemos através do corpo de padrões não reconhecidos) depende de DRX (de outro padrão de trabalho em andamento em um corpo de padrões totalmente diferente) talvez seja lamentável. Tudo o que posso dizer é que parecia uma boa ideia na época.)

"O que preciso fazer para implantar?"

Veja Joseph Smarr's Uma receita para que o OpenId que seja o seu site. Vaca sagrada, já tem mais de 2 anos? Ainda é relevante, no entanto.

Como o provedor OpenID identifica o seu site (a parte que se confia):

Esse pequeno texto (por exemplo, "Stackoverflow.com") é o "Reino" OpenID, que é um parâmetro que você passa para o provedor e é um subconjunto rigoroso do URL do terminal que você usa para processar a resposta deles. (Então, se você pedir ao servidor para enviar a resposta OpenID para server2.example.com/foobar, seu reino pode ser exemplo.com ou server2.example.com ou server2.example.com/foobar, mas não server99.example .com.)

Chaves secretas da API:

Em geral, não há chave de API secreta fora da banda para obter. Para fornecedores de OpenID de uso geral, as chaves são emitidas pelo mecanismo de associação OpenID padrão.

Agora você acertou alguns recursos aqui que um provedor OpenID certamente pode considerar valioso-como "Como posso dizer ao usuário de uma maneira mais fácil de usar em que site eles estão fazendo login do que mostrar a eles um trecho de URL" ou "Como posso identificar essa solicitação é realmente proveniente de um RP com o qual tenho algum tipo de relacionamento contratual", mas esses recursos não são nada que esteja no padrão OpenID 2.0.

Parece que você realmente quer investigar RPX - É uma solução que facilita para os desenvolvedores (e usuários) usarem seus mecanismos de autenticação preferidos, incluindo o OpenID.

Trabalhando como proxy entre os provedores de identidade de terceiros e seu site, o RPX ajuda a autenticar os usuários sem esforço com a conta existente no Facebook, Google, Yahoo!, Twitter, MySpace, AOL, Windows Live/MSN/Hotmail ou qualquer outro provedor OpenID.

Na minha experiência, sim.

Eu estava tentando usar dotnetopenauth, especificamente no Mono, e não cheguei a lugar algum rápido, e tentei muitas maneiras de fazê -lo funcionar, e acabei ficando muito frustrado.

Sem alternativas que usei LoginRadius (Já usando com um site WordPress que eu tinha) e achei muito mais fácil, além de aparecer uma janela pop-up para fazer a autenticação, que é assim que eu o gostaria com o Dotnetopenauth.

Eles olham livre no momento, mas diz beta. Então eles podem cobrar por isso no futuro ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top