какие параметры должны быть установлены в почтальоне, чтобы получить информацию о типе запроса - PullRequest
0 голосов
/ 07 февраля 2019

Я использую токены 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, но я получаю нулевые значения

...