У меня есть веб-приложение с бэкендом C #, которое пытается получить токен доступа из Azure AD.Используя https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/oauth2/token. Я получил код авторизации, но при запросе токена доступа я получаю следующий ответ:
error: invalid_grant
error_description: AADSTS70000: Transmission data parser failure: Authorization Code is malformed or invalid.
Я проверил, что URL перенаправления точно такой же, как и тот, который я используюв запросе кода авторизации.И redirect_uri, app_id_uri и клиентский секрет кодируются в URL.
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.Method = "POST";
string parameter = "code=" + code;
parameter += "&client_id=" + client_id;
parameter += "&client_secret=" + client_secret;
parameter += "&redirect_uri=" + redirect_uri;
parameter += "&grant_type=authorization_code";
parameter += "&resource=" + app_id_uri;
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] byteArray = encoding.GetBytes(parameter);
request.ContentLength = byteArray.Length;
request.ContentType = "application/x-www-form-urlencoded";
Stream datastream = request.GetRequestStream();
datastream.Write(byteArray, 0, byteArray.Length);
datastream.Close();
WebResponse response = request.GetResponse();
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
{
while (!sr.EndOfStream)
{
string line = sr.ReadLine();
return line;
}
}
ОБНОВЛЕНИЕ:
Это запрос на получение кода авторизации:
https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/oauth2/authorize?client_id={CLIENT_ID}&response_type=id_token&redirect_uri={REDIRECT_URI}&response_mode=fragment&scope=openid&state=microsoftoauth&nonce=7362CAEA-9CA5-4B43-9BA3-34D7C303EBA7