ASP .NET - Usando a autenticação Google OpenID com DotNetOpenAuth


Agora você pode acessar qualquer site que suporte OpenID usando a sua própria Conta do Google.

Neste artigo eu vou mostrar como usar o OpenID para realizar a autenticação em sua aplicação ASP .NET com o DotNetOpenAuth.

Recursos usados:

Criando o projeto no Visual Web Developer

Abra o VWD 2010 Express e crie um novo projeto Web usando a linguagem Visual Basic e template ASP .NET Empty Web Application com o nome: UsandoGoogleOpenID

Após fazer o download do DotNetOpenAuth vamos referenciar o arquivo DotNetOpenAuth.dll em nosso projeto.

No menu Project  clique em Add Reference e na janela Add Reference selecione a guia Browse e localize o local onde você colocou os arquivos do DotNetOpenAuth selecionando arquivo DotNetOpenAuth.dll;

A seguir vamos incluir duas páginas Web Forms no nosso projeto.

No Project -> Add New Item selecione o template Web Form e informe o nome Login.aspx;

Repita o procedimento anterior incluindo outra página chamada Main.aspx.

A página Main.aspx será a página para onde o usuário deverá ser direcionado se realizar o login com sucesso. Para o nosso exemplo o seu leiaute é bem simples e pode ser visto abaixo:

Vamos agora definir o leiaute e o código da página de login.

Selecione o arquivo Login.aspx e inclua um botão de comando na página (Id=btnLoginGoogle) e um controle Label (Id=lblAlertaMsg).

A seguir defina o seguinte código nesta página:

  <form id="form1" runat="server">
        <div id="loginform">
            <div id="NotLoggedIn" runat="server">
                <h1 class="style2">
                    <strong>Macoratti.net</strong></h1>
                <br />
                    <span class="style3">Log in com :</span> <img alt="Login com Google" src="http://www.google.com/favicon.ico" />
                    <asp:Button ID="btnLoginGoogle" Runat="server" Text="Google" OnCommand="OpenLogin_Click"
                        CommandArgument="https://www.google.com/accounts/o8/id" />
                <p /><asp:Label runat="server" ID="lblAlertaMsg" style="font-family: 'Trebuchet MS'" />
            </div>
        </div>
    </form>

 

O leiaute da página Login.aspx deverá ser o seguinte:

Vamos agora definir no arquivo code-behind Login.aspx.vb o seguinte código:

Imports DotNetOpenAuth.OpenId
Imports DotNetOpenAuth.OpenId.RelyingParty

Public Class Login
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim rp As New OpenIdRelyingParty()
        Dim r = rp.GetResponse()
        If r IsNot Nothing Then
            Select Case r.Status
                Case AuthenticationStatus.Authenticated
                    NotLoggedIn.Visible = False
                    Session("GoogleIdentifier") = r.ClaimedIdentifier.ToString()
                    Response.Redirect("Main.aspx")
                    'redireciona para a pagina do site
                    Exit Select
                Case AuthenticationStatus.Canceled
                    lblAlertaMsg.Text = "Cancelado."
                    Exit Select
                Case AuthenticationStatus.Failed
                    lblAlertaMsg.Text = "Login Falhou."
                    Exit Select
            End Select
        End If
    End Sub

    Protected Sub OpenLogin_Click(ByVal src As Object, ByVal e As CommandEventArgs)
        Dim discoveryUri As String = e.CommandArgument.ToString()
        Dim openid As New OpenIdRelyingParty()
        Dim b = New UriBuilder(Request.Url) With {.Query = ""}
        Dim req = openid.CreateRequest(discoveryUri, b.Uri, b.Uri)
        req.RedirectToProvider()

    End Sub
End Class

Neste código estamos referenciando os namespaces para termos acesso as classes do DotNetOpenAuth:

Imports DotNetOpenAuth.OpenId
Imports DotNetOpenAuth.OpenId.RelyingParty

E no evento load da página definimos o código que irá realizar a autenticação usando o OpenID. Se a autenticação for válida o usuário será redirecionado para a página Main.aspx caso contrário iremos exibir uma mensagem na label lblAlertaMsg.

A página Main.aspx pode conter uma mensagem de boas vindas ou um menu com opções.

Executando o projeto iremos obter:

Clicando no botão de Google teremos a seguinte página:

Informando o email e senha usados no Google teremos:

Observe que fazendo o login com sucesso fomos redirecionados para a página Main.aspx.

Se o login falhar será exibida uma mensagem na Label da página Login.aspx.

Você pode usar este recurso em suas aplicações ASP .NET (dependendo da necessidade) para dessa forma centralizar e terceirizar o gerenciamento da autenticação em suas aplicações poupando tempo e recursos.

Pegue o projeto completo aqui: UsandoGoogleOpenID.zip

"Em verdade , em verdade vos digo que vem a hora, e agora é, em que os mortos ouvirão a voz do Filho de Deus, e os que a ouvirem viverão."(João-5:25)

Referências:


José Carlos Macoratti