У меня есть веб-Апи с маршрутом к установке Войти лексемы в Startup.Auth как так:PostAsync к/Токен возвращается Внутренняя ошибка сервера
PublicClientId = "self";
OAuthOptions = new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/Token"),
Provider = new ApplicationOAuthProvider(PublicClientId),
AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
AllowInsecureHttp = false
};
Это должно маршрут мой апи запрос Войти сюда:
[OverrideAuthentication]
[HostAuthentication(DefaultAuthenticationTypes.ExternalCookie)]
[AllowAnonymous]
[Route("ExternalLogin", Name = "ExternalLogin")]
public async Task<IHttpActionResult> GetExternalLogin(string provider, string error = null)
{
Authorize stuff...
}
От моего клиента я пытаюсь войти в систему и получить маркер доступа:
var loginResponse = await client.PostAsync("/Token", loginContent);
Использование входа Conte нт:
var values = new Dictionary<string, string>();
values.Add("grant_type", "password");
values.Add("username", "usernamehere");
values.Add("password", "passwordhere");
var loginContent = new FormUrlEncodedContent(values);
Когда я пытаюсь войти в PostAsync к/Знаку, чтобы получить access_token назад я всегда получаю Внутреннюю ошибку сервера. Я даже не могу войти в api, чтобы посмотреть, что происходит.
Если удалить [Авторизовать] украшение из методов API, я могу получить мои данные обратно ... Я просто не могу войти.
Если я иду в браузер и положить следующее в url to test ...
https://localhost:44305/Token
Я получаю (400) плохую просьбу. Не уверен, что попробовать дальше.
Мне нужно, чтобы Token Auth работал ... не может публиковать без обеспечения. ;)
Update:
Я хотел бы добавить, что я использую пользовательский UserStore для идентичности.
Обновление 2: Клиент
public static HttpClient GetClient()
{
HttpClient Client = new HttpClient();
Client.BaseAddress = new Uri(Ics2Constants.ICS2APIBaseAddress);
Client.DefaultRequestHeaders.Accept.Clear();
Client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
return Client;
}
Затем с помощью:
using (var client = ICS2HttpClient.GetClient())
{
//TESTING:
await ICS2HttpClient.Authenticate(client);
//... more stuff after authentication
}
Аутентифицировать содержит PostAsync ...
Можете ли вы добавить код, в котором вы создаете экземпляр клиента? – ajliptak
Ну, я чувствую себя немым.Я должен был смотреть на GrantResourceOwnerCredentials для запроса Token. У меня была некоторая логика, которую нужно было обновить на основе моей индивидуальной идентификации ... старая логика потерпела неудачу и вернула внутреннюю ошибку сервера ... ExternalLogin было неправильным местом для поиска. – pStan