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

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

1 голос
/ 20 декабря 2010

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

Существует ли простая библиотека JS openid?или простой / хороший пример openid, делающий это для настольного приложения C #?

Ответы [ 2 ]

1 голос
/ 20 декабря 2010

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

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

0 голосов
/ 20 декабря 2010

Вот мой файл 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;
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...