Как структурировать мою express конечную точку для авторизации входящего запроса с заголовками авторизации oauth 1.0 в express - PullRequest
0 голосов
/ 29 февраля 2020

Пожалуйста, потерпите меня, я новичок в API. Поэтому я работаю над небольшим проектом, в котором мне нужно разработать конечную точку, которая принимает запрос по почте. Запрос поступает из внешнего домена с заголовками авторизации Oauth1.0. Запрос также имеет тело xml.

Поэтому я пытаюсь установить res.headers в соответствие с req.headers и ключом oauth_signature. Однако я даже не уверен, что это правильный способ аутентификации.

Кроме того, без авторизации тело запроса становится пустым объектом. Это правильное поведение? Требуется ли сначала авторизация, чтобы получить доступ к request.body?

Вот пример тела запроса и заголовка.

{
    "headers" : {
        "Content-Type" : "application/xml",
        "Authorization" : "OAuth realm=\"\",oauth_version=\"1.0\",oauth_nonce=\"f8b4e8d94c9b3016633851df203faf7b\",oauth_timestamp=\"1580862430\",oauth_consumer_key=\"somekey\",oauth_body_hash=\"somekey\",oauth_signature_method=\"HMAC-SHA1\",oauth_signature=\"somekey\""
    },

    "body" : "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\"

}

Вот мой текущий код.

const OAuthS = require('oauth-signature')

app.use('/results', function(req, res) {
const now = new Date() 
let url = 'https://example.com'


let parameters = {
    "oauth_consumer_key" : 'somekey',
    "oauth_nonce" : 'somekey',
    "oauth_timestamp" : Math.round(now.getTime() / 1000),
    "oauth_body_hash": "somekey,
    "oauth_signature_method" : 'HMAC-SHA1',
    "oauth_version" : '1.0',
}
let consumer_secret = "somekey"
let OS = OAuthS.generate('POST', url, parameters, consumer_secret )

res.setHeader(
    "Content-Type" , "application/xml"

)
res.setHeader(
    "Authorization", "OAuth realm='',oauth_version='1.0',oauth_nonce='somekey',oauth_timestamp='somekey',oauth_consumer_key='somekey',oauth_body_hash='somekey',oauth_signature_method='HMAC-SHA1',oauth_signature=" + `\'${OS}\'`
)

let body = req.body
console.log(body)
});
...