Я пытаюсь получить токен доступа OAuth, используя утверждение SAML.Мне нужен токен доступа для доступа к API ресурса в бэкэнде.
В настоящее время я размещаю утверждение SAML в кодировке base64.
в фигурных скобках указаны отредактированные значения
var result = string.Empty;
var ClientId = {{Guid value}};
var ApiResourceId = {{Guid value}};
var authority = "https://login.microsoftonline.com/{{tenantID}}";
var assertionType = "urn:ietf:params:oauth:grant-type:jwt-bearer";
var encodedAssertion = Base64UrlEncoder.Encode(XMLAssertion);
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("client-request-id", ClientId);
client.DefaultRequestHeaders.Add("return-client-request-id", "true");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));
var dict = new Dictionary<string, string>();
dict.Add("client_id", ClientId);
dict.Add("grant_type", "urn:ietf:params:oauth:grant-type:saml2-bearer");
dict.Add("assertion", encodedAssertion);
dict.Add("scope", "{{scope value}}");
var req = new HttpRequestMessage(HttpMethod.Post, string.Format("{0}/oauth2/v2.0/token", authority)) { Content = new FormUrlEncodedContent(dict) };
var res = client.SendAsync(req).Result;
var task = res.Content.ReadAsStreamAsync().ContinueWith(t =>
{
using (var reader = new StreamReader(t.Result))
while (reader.Peek() > 0)
result += reader.ReadLine();
});
task.Wait();
}
Я пытаюсь получить токен доступа, который можно использовать для запроса токена носителя для использования API ресурса.Мне нужно использовать утверждение SAML для аутентификации пользователя, вошедшего в систему.
В настоящее время я получаю эту ошибку обратно (снова с отредактированным идентификатором арендатора)
{"error":"invalid_request","error_description":"AADSTS50107: Requested federation realm object
'https://sts.windows.net/{{tenantID}}/' does not exist. Trace
ID: {{guid value1}} Correlation
ID: {{guid value2}} Timestamp: 2019-01-28 02:33:48Z",
"error_codes":[50107],"timestamp":"2019-01-28 02:33:48Z","trace_id":"{{guid value1}}",
"correlation_id":"{{guid value2}}"}