C # DotNetOpenAuth Oauth2 Получить токен - PullRequest
0 голосов
/ 30 ноября 2018

Я не очень знаком с oAuth2 и уже застрял на получении токена в C #.

Я могу получить токен через Почтальона.

Вот мои настройки на почтальоне

Настройки почтальона

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

Я пытаюсь добиться того же пути в c #.

Вот код, который я пробовал:

var serverDescription = new AuthorizationServerDescription();
    serverDescription.AuthorizationEndpoint = new Uri("https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/authorize?resource=https%3A%2F%2Fmicrosoft.onmicrosoft.com%2Fredirectionapi");
serverDescription.TokenEndpoint = new Uri("https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/token?resource=https%3A%2F%2Fmicrosoft.onmicrosoft.com%2Fredirectionapi");
        serverDescription.ProtocolVersion = ProtocolVersion.V20;
        var client = new WebServerClient(serverDescription);
        client.ClientIdentifier = "MY CLIENT ID";
        client.ClientCredentialApplicator =
            ClientCredentialApplicator.PostParameter("MY CLIENT SECRET");
        var token = client.GetClientAccessToken();

        var request = (HttpWebRequest)WebRequest.Create("https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/authorize");
        request.Method = "GET";
        client.AuthorizeRequest(request, token);
        var response = request.GetResponse();
        var postreqreader = new StreamReader(response.GetResponseStream());
        var json = postreqreader.ReadToEnd();

Но когда я нажимаю кнопку, ничего не происходит.Токен не получен, даже страница с логином так и не появилась.

Этот код открывает браузер для входа, но не может получить токен, пока отсутствуют параметры, такие как секрет клиента, конечная точка токена, конечная точка авторизации

var authority = "https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/authorize"; 
        var resource = "https://microsoft.onmicrosoft.com/FWDLinks"; //Redirection API Test Resource.
        var replyUrl = "https://www.getpostman.com/oauth2/callback"; //Reply URL your application to identify itself.
        var clientId = "CLIENT ID"; 

        AuthenticationContext authContext = new AuthenticationContext(authority);
        var token = authContext.AcquireTokenAsync(resource, clientId, new Uri(replyUrl), new PlatformParameters(PromptBehavior.Auto)).Result;
        var httpClient = new HttpClient();
        httpClient.DefaultRequestHeaders.Add("Authorization", token.CreateAuthorizationHeader());

ОБНОВЛЕНИЕ

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

Этот остальной код, кажется, не работает и незнаю почему /

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
            var request = (HttpWebRequest)WebRequest.Create("https://www.getpostman.com/oauth2/callback");
            request.Method = "GET";
            client.AuthorizeRequest(request, token);
            var response = request.GetResponse();
            var postreqreader = new StreamReader(response.GetResponseStream());
            var json = postreqreader.ReadToEnd();

переменная json, возвращающая ноль, та же самая переменная ответа

...