2016-02-10 2 views
1

У меня есть приложение .NET 4.0, и мне нужно добавить аутентификацию OAuth2 с третьим уровнем. И я немного смущен (трудно найти образец и документацию для .NET 4.0).Внедрение OAuth2 с Asp.net 4.0

Могу ли я использовать Microsoft.AspNet.Membership.OpenAuth (OAuth 2.0) с Asp.net 4.0 (.NET 4.0)?

Другой вариант, который у меня есть, - использовать DotNetOpenAuth, но у меня есть некоторые проблемы с тем, чтобы найти пример с Callback для Webforms в .NET 4.0.

Из моего понимания я должен иметь страницу аутентификации (Логин страницы):

var medOK = new WebServerClient(GetAuthServerDescription(), clientIdentifier: "some client id"); 
medOK.ClientCredentialApplicator = ClientCredentialApplicator.PostParameter("some secret code"); 

// CallBack 
var state = new AuthorizationState(); 
var uri = Request.Url.AbsoluteUri; 
uri = RemoveQueryStringFromUri(uri); 
state.Callback = new Uri(uri); 
var accessTokenResponse = medOK.ProcessUserAuthorization(); 
if (accessTokenResponse != null){ 
    //If you have accesstoek then do something 
} else if (this.AccessToken == null) { 
    // If we don't yet have access, immediately request it. 
    medOK.PrepareRequestUserAuthorization(state); 
    medOK.RequestUserAuthorization(); 
} 

и страницы обратного вызова (скажем страницу ASHx) с:

var medOK = new WebServerClient(GetAuthServerDescription(), clientIdentifier: "some client id"); 
medOK.ClientCredentialApplicator = ClientCredentialApplicator.PostParameter("some secret code"); 
var response = medOK.GetClientAccessToken(); 

// Then I get claims 

Сделать Sens? (Я старался быть кратким и не писал все, что я пробовал, но при необходимости я могу предоставить дополнительную информацию)

ответ

3

Если вы используете 4.5 или выше, используйте Owin, как описано во многих веб-блогах и если вы создаете Asp. net project с шаблоном Visual Studio 2013 + у вас будет пример, как его реализовать, like mentioned here. Или вы можете использовать IdentityModel, который прост в использовании.

Для .NET 4.0 я закончил использовать DotNetOpenAuth, это был не простой способ найти, как вызвать библиотеку, поэтому я поделился своим нахождением идентификатором первого шага, чтобы получить авторизацию пользователя.

var client = new WebServerClient(GetAuthServerDescription(), clientIdentifier: "client id"); 
client.ClientCredentialApplicator = ClientCredentialApplicator.PostParameter("secrete"); 

// CallBack 
uri = RemoveQueryStringFromUri(callBack); 
state.Callback = new Uri(uri); 
var accessTokenResponse = client.ProcessUserAuthorization(); 
if (accessTokenResponse != null){ 
    //If you have accesstoek then do something 
} else { 
    // If we don't yet have access, immediately request it. 
    client.PrepareRequestUserAuthorization(state).Send(); 
} 

С GetAuthServerDescription строит AuthorizationServerDescription

и метод обратного вызова URL является простым постом (чтобы получить маркер), как я не нашел, как отправить точные параметры мне нужно, чтобы отправить мой провайдер.

-4

Вы должны прочитать мой файл stackoverflow question для удобства.

+0

Просто, чтобы вы знали, ссылки только на ответы, как правило, рассматриваются как комментарии здесь. – halfer

+0

Речь идет о OAuth 1.0 ... И я спрашивал об OAuth 2.0 – rad

+0

@halfer thx для головок вверх –

Смежные вопросы