/ / IdentityServer3 Код стану відповіді не вказує на успіх: 400 (Bad Request) - asp.net-mvc, bad-request, identityserver

IdentityServer3 Код стану відповіді не вказує на успіх: 400 (Bad Request) - asp.net-mvc, bad-request, identityserver3

Я завжди отримую Bad Request 400 від IdentityServer3. Я намагаюся протягом 3 днів, але не пощастило :( Будь-хто може, будь ласка, скажіть мені, що я роблю неправильно?

Я намагаюся отримати доступ до IdentityServer3, розміщеного наіншого виробника, якого я не контролюю. Постачальник попросив нас реалізувати аутентифікацію OAuth2 з токеном Bearer. Постачальник надав нам ідентифікатор клієнта, секрет клієнта, а URL-адреса, яку слід використовувати, - це http://www.xxxxxx.com/identity/connect/token

Постачальник повідомив нам про те, щоб використовувати запит на токене пред'явника і використовувати його в заголовках запитів

Я можу успішно отримати маркер на пред'явника від постачальника. Але коли я називаю GET /api/profiles/myemailaddress@gmail.com Я отримую Bad Request 400

Ось що я зробив:

TokenClient client = new TokenClient("http://www.xxxxxx.com/identity/connect/token", "myclientid", "myclientsecret", AuthenticationStyle.PostValues);
var response = await client.RequestResourceOwnerPasswordAsync("myemailaddress@gmail.com", "mypassword", "profile"); // successfully gives me the token

я отримав маркер доступу, тепер я хочу використовувати маркер для запиту профілю користувача:

var clienthttp = new HttpClient();
clienthttp.BaseAddress = new Uri("http://www.xxxxxx.com");
clienthttp.SetBearerToken(response.AccessToken);
var json = await clienthttp.GetStringAsync("http://www.xxxxxx.com/api/profiles/myemailaddress@gmail.com"); // error Bad Request 400

Додаткова інформація: "scopes_supported": ["профіль", "offline_access"], "claims_supported": []

введіть опис зображення тут

Дякую.

Відповіді:

0 для відповіді № 1

Продавець очікував додаткового значення в заголовку. Оскільки у моєму запиті відсутнє таке додаткове значення, вони повернули неправильний запит. Мені довелося змінити код, щоб знайти точну причину поганого запиту.

Оновлений код може бути корисним для когось:

        var client = new HttpClient();
client.BaseAddress = new Uri("http://www.xxxxx.com");
client.SetBearerToken(response.AccessToken);
var callApiResponse = client.GetAsync("api/profiles/myemailaddress@gmail.com").Result;
string tokenresponse = callApiResponse.StatusCode.ToString();
string clientresult = callApiResponse.Content.ReadAsStringAsync().Result;

tokenresponse: "Поганий запит 400"

clientresult: "Відсутній ідентифікатор компанії в заголовку"

Тоді я знав, що вони також чекають на компанію в заголовку, тому я додав її. тоді все було добре.

client.DefaultRequestHeaders.Add("CompID", "xxxxxx");