Учетные данные Gmail для аутентификации на сайте ASP.net - PullRequest
0 голосов
/ 08 февраля 2012

У меня есть два текстовых поля для имени пользователя и пароля. Теперь я хочу, чтобы пользователи вводили идентификатор своей электронной почты и пароль своей компании (имя пользователя и пароль предоставлены Google, веб-сервер - Google) и входили на веб-сайт ASP.net. Создайте сеанс имени пользователяи пароль. Кроме того, я хочу, чтобы пользователь мог отправлять электронную почту с веб-сайта asp.net, используя те же учетные данные Gmail. Заранее благодарим вас за помощь любого типа.

Ответы [ 3 ]

2 голосов
/ 09 февраля 2012

Ответ, который я хотел получить, это, и этот код работает нормально. И я нигде не храню пароль в сеансе и базе данных.

<form id="form1" runat="server">  
      <div id="loginform">  
        <div id="NotLoggedIn" runat="server">  
          Log in with <img src="http://www.google.com/favicon.ico" />  
            <asp:Button ID="btnLoginToGoogle" Runat="server" Text="Google"     OnCommand="OpenLogin_Click"  
              CommandArgument="https://www.google.com/accounts/o8/id" />  
          <p /><asp:Label runat="server" ID="lblAlertMsg" />  
        </div>  
      </div>  
    </form>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DotNetOpenAuth.OpenId;
using DotNetOpenAuth.OpenId.RelyingParty;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        OpenIdAjaxRelyingParty rp = new OpenIdAjaxRelyingParty();
        var r = rp.GetResponse();
        if (r != null)
        {
            switch (r.Status)
            {


       case AuthenticationStatus.Authenticated:
                NotLoggedIn.Visible = false;
                Session["GoogleIdentifier"] = r.ClaimedIdentifier.ToString();
                Response.Redirect("Default2.aspx");
                break;
            case AuthenticationStatus.Canceled:
                lblAlertMsg.Text = "Cancelled.";
                break;
        }

    }

}
protected void OpenLogin_Click(object sender, CommandEventArgs e)
{
    string discoveryUri = e.CommandArgument.ToString();
    OpenIdRelyingParty openid = new OpenIdRelyingParty();
    var b = new UriBuilder(Request.Url) { Query = "" };
    var req = openid.CreateRequest(discoveryUri, b.Uri, b.Uri);
    req.RedirectToProvider();
}
}

но я все еще сомневаюсь в том, как получить имя пользователя, под которым пользователь вошел в систему для создания сеанса ... ??? Это можно сделать, я где-то видел это ...

2 голосов
/ 08 февраля 2012

Вам следует проверить библиотеку OpenId на C #.

http://code.google.com/p/dotnetopenid/

Это даст вам хорошее начало.Таким образом, пользователю не придется напрямую использовать свой пароль, и он будет перенаправлен к поставщику, который предоставит аутентификацию для вашего сайта.

0 голосов
/ 08 февраля 2012

Нет, Google не позволит вам сделать это.Вам нужно будет сделать что-то похожее на то, что делает StackOverflow (предоставьте функцию OpenID для аутентификации на google.com).

...