Как получить токен доступа без регистрации или входа в веб-приложение? - PullRequest
0 голосов
/ 31 мая 2019

Я создал пользователя b2c, используя Azure Graph API в Web API, потому что мне нужно создать пользователя на стороне сервера, а не клиентов, таких как веб-приложение или мобильное приложение.Я сделал шаги по ссылке (https://docs.microsoft.com/en-us/previous-versions/azure/ad/graph/api/users-operations#CreateLocalAccountUser). Моя проблема в том, что я не могу получить токен доступа, который использовался для доступа к защищенному веб-API. Как я могу получить токен доступа?

1 Ответ

0 голосов
/ 03 июня 2019

Кажется, вы пытаетесь получить токен доступа, используя протокол аутентификации ROPC. Вот пример.

Фрагмент кода:

Класс токенов:

 public class AccessTokenClass
        {
            public string token_type { get; set; }
            public string expires_in { get; set; }
            public string resource { get; set; }
            public string scope { get; set; }
            public string access_token { get; set; }
            public string refresh_token { get; set; }

        }

Метод токена:

private async Task<string> GetTokenByROPCFormat()
        {

            string tokenUrl = $"https://login.microsoftonline.com/YourTenantIdOrName/oauth2/token";

            var tokenRequest = new HttpRequestMessage(HttpMethod.Post, tokenUrl);

            tokenRequest.Content = new FormUrlEncodedContent(new Dictionary<string, string>
            {
                ["grant_type"] = "password",
                ["client_id"] = "b603c7be-a866--e6921e61f925",
                ["client_secret"] = "Vxf1SluKbgu4PF0Nf3wE5oG",
                ["resource"] = "https://graph.microsoft.com",
                ["username"] = "kironmemb@MyTenant.onmicrosoft.com",
                ["password"] = "@Mypassword"

            });

            dynamic json;
            dynamic results;
            HttpClient client = new HttpClient();

            var tokenResponse = await client.SendAsync(tokenRequest);

            json = await tokenResponse.Content.ReadAsStringAsync();
            results = JsonConvert.DeserializeObject<AccessTokenClass>(json);
            Console.WriteLine("Your Refresh Token=>{0}", results.access_token);



            //  New Block For Accessing Data from API
            HttpClient newClient = new HttpClient();

            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://graph.microsoft.com/v1.0/me");

            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", results.access_token);
            HttpResponseMessage response = await newClient.SendAsync(request);

            string output = await response.Content.ReadAsStringAsync();
            return output;




        }

Примечание: Пожалуйста, обратите внимание на следующие пункты: enter image description here

поток учетных данных клиента:

В этом случае вы можете реализовать Client credential grant flow: вы можете получить полный фрагмент кода для этого потока аутентификации здесь

Если у вас все еще есть какие-либо вопросы, не стесняйтесь делиться благодарностями и счастливым кодированием!

...