Я прочитал много документов, но, возможно, что-то пропустил. Я хочу передать имя пользователя и пароль в Web API, получить токен в ответ и использовать его для доступа к другим защищенным частям Web API (неинтерактивная авторизация)
Я обнаружил, что это можно делать только с нативными клиентами (настольные, мобильные приложения)
List<string> scopes = new List<string>()
{
"https://mydomain.onmicrosoft.com/myapp/access-as_user"
};
string clientId = _azureAdOptions.Value.ClientId;
string aadInstance = "https://login.microsoftonline.com/{0}/v2.0";
string tanent = "organizations";
string authority = String.Format(CultureInfo.InvariantCulture, aadInstance, tanent);
var secureStringPass = new NetworkCredential("", pass).SecurePassword;
PublicClientApplication _app = new PublicClientApplication(clientId, authority);
var result = await _app.AcquireTokenByUsernamePasswordAsync(scopes, usr, secureStringPass);
Приведенный выше код работает в natove clieant, но когда я перемещаю его в приложение WebAPI, оно дает мне
MsalServiceException: AADSTS70002: тело запроса должно содержать
следующий параметр: 'client_secret или client_assertion'
Разве невозможно получить токен формы web api таким образом?