Запрос токена доступа OAuth с использованием подтверждения SAML - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь получить токен доступа 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}}"}
...