Я использую токены JWT для аутентификации в своем проекте веб-API.Я успешно могу войти в свой аккаунт.Я пытаюсь выяснить параметры запроса, которые нужно установить в Postman для моей документации.
Запрос, который я отправляю для получения токена из моего пользовательского интерфейса, выглядит следующим образом:
public getToken(parameter: string[]): Observable<any> {
const data = new HttpParams()
.set('username', parameter[0])
.set('password', parameter[1])
.set('grant_type', 'password');
const url = '/api/login';
return this._httpClient.post(url, data.toString()).pipe(
map(x => x),
catchError((error: any) => {
let errorMessage: any;
if (error.error && error.error.error_description) {
errorMessage = error.error.error_description;
}
throw errorMessage;
})
);
}
В APIкод выглядит примерно так:
public class ldAuthorizationServerProvider : OAuthAuthorizationServerProvider
{
public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
{
context.Validated();
}
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
string userName = CryptoEngine.GetDecryptedEmail(context.UserName);
context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });
using (SelfMeEntities scContext = new SelfMeEntities())
{
//string encryptedPassword = CryptoEngine.EncryptPassword(context.Password);
var user = scContext.Users.SingleOrDefault(b => b.EmailAddress == userName && b.OTP == context.Password);
if (user == null)
{
context.SetError("invalid_grant", "The user name or password is incorrect.");
return;
}
var identity = new ClaimsIdentity("JWT");
identity.AddClaim(new Claim("userId", user.ID.ToString(), ClaimValueTypes.Integer));
identity.AddClaim(new Claim("userName", user.FirstName.ToString()));
identity.AddClaim(new Claim("userEmail", user.EmailAddress.ToString()));
context.Validated(new AuthenticationTicket(identity, null));
}
}
}
Используемые мной текущие параметры:
Метод: URL-адрес POST: http://localhost:60067/api/login
Тип авторизации: токен на предъявителя
В заголовках
Авторизация: Носитель [мой токен] Тип содержимого: текст / обычный
В теле
необработанный формат
"username=dummy@dummy.com&password=310611&grant_type=password "
Я не уверен, что мне не хватает, С этой текущей настройкой я могу нажать API, но я получаю нулевые значения