Легкий openid? .NET / JS?

1

Я попытался понять dotnetopenid и не удалось. Я не знаю asp.net достаточно хорошо, и я хочу сделать это проблематично.

Есть ли простая JS openid lib? или простой/хороший пример openid, выполняющий его для настольного приложения С#?

Теги:
openid

2 ответа

1
Лучший ответ

Вот пример открытого идентификатора в С#.net. Не рабочий стол, а веб-сайт.

http://www.nikhedonia.com/notebook/entry/openid-and-asp-net-mvc/

  • 0
    Это было довольно просто! Жаль, что это не показывает, как запросить электронную почту и тому подобное. Я добавлю ответ для этого!
0

Вот мой файл aspx, я добавил только одну строку, строку WebApplication1.openidtest.Authenticate

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <% WebApplication1.openidtest.Authenticate("http://your_id.myopenid.com/"); %>
    </div>
    </form>
</body>
</html>

Вот файл cs. Обратите внимание, что это работает, но не обрабатывает такие вещи, как ошибки, и на самом деле это просто для тестирования/точек останова.

ПРИМЕЧАНИЕ. Если требуется электронное письмо, и пользователь отправляет персону, у которой нет электронной почты, не будет указан электронный адрес, поэтому вы должны проверить и обработать соответствующим образом.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

using DotNetOpenAuth;
using DotNetOpenAuth.OpenId;
using DotNetOpenAuth.OpenId.RelyingParty;
using DotNetOpenAuth.OpenId.Extensions.AttributeExchange;
using DotNetOpenAuth.OpenId.Extensions.SimpleRegistration;
namespace WebApplication1
{
    static public class openidtest
    {
        static public void Authenticate(string openIdIdentifier)
        {
            var openId = new OpenIdRelyingParty();
            var response = openId.GetResponse();
            if (UserNeedsToLogin(response))
            {
                var request = openId.CreateRequest(openIdIdentifier);
                request.AddExtension(new ClaimsRequest { Email = DemandLevel.Require });
                request.RedirectingResponse.Send();
                return;
            }

            HandleAuthenticationResponse(response);
        }

        static bool UserNeedsToLogin(IAuthenticationResponse response)
        {
            return response == null;
        }

        static void HandleAuthenticationResponse(IAuthenticationResponse response)
        {
            switch (response.Status)
            {
                case AuthenticationStatus.Authenticated:
                    {
                        var claims = response.GetExtension<ClaimsResponse>();
                        if (claims != null)
                        {
                            var s = claims.Email;
                        }
                        return;
                        //return HandleSuccessfulLogin(response);
                    }
                case AuthenticationStatus.Canceled:
                    //_context.ErrorMessage = "Login was cancelled at the provider.";
                    break;
                case AuthenticationStatus.Failed:
                    //_context.ErrorMessage = "Login failed at the provider.";
                    break;
                case AuthenticationStatus.SetupRequired:
                    //_context.ErrorMessage = "The provider requires setup.";
                    break;
                default:
                    //_context.ErrorMessage = "Login failed.";
                    break;
            }
        }
    }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню