Попытка получить доступ к ресурсу API, для которого требуется код авторизации типа предоставления. Я могу вернуть действительный код доступа с помощью Почтальона и его инструмента авторизации.
![enter image description here](https://i.stack.imgur.com/FVAWf.png)
Для этого Почтальон открывает окно входа в систему, где я ввожу имя пользователя и пароль.
Как я могу выполнить sh это чисто проблематично без вмешательства пользователя? Этот тип предоставления, по-видимому, является единственным, который работает с этим API, поскольку, когда я просто пытаюсь использовать client_id и client_secret с потоком учетных данных клиента, токен доступа, который я получаю, не позволяет мне войти в API (401).
Я хочу сделать это как код агности c, насколько это возможно. То есть я хотел бы иметь возможность делать это, не полагаясь на библиотеку, которая делает что-то за кулисами. В идеале все было бы сделано через HTTP, как с cURL.
У меня есть некоторый код C#, который делает то, что я ищу, но использует библиотеку Microsoft.IdentityModel.Clients.ActiveDirectory
(older version 2.29.0.1078
). Кажется, можно получить токен, передав имя пользователя и пароль
string userName = "johndoe";
string password = "mydoghasfleas";
string clientId = "7934579357js487dhj444";
clientBaseUrl = "https://mycompanyname.dynamics.com";
apiEndpointUrl = clientBaseUrl + "/data/resource=XYZ";
UserCredential credential = new UserCredential(userName, password);
AuthenticationContext authContext = new AuthenticationContext(apiEndpointUrl, false);
AuthenticationResult authResult = await authContext.AcquireTokenAsync(clientBaseUrl, clientID, credential);
Я пытаюсь понять, как это сделать, не завися от библиотеки Microsoft.IdentityModel.Clients.ActiveDirectory
.