저는 Zendesk API, HTTPS 전용 JSON API로 작업 중이며 리소스를 업데이트하는 데 인증이 필요하며 API는 다른 사용자로 인증 할 때 사용할 API 토큰을 제공합니다. 리소스를 업데이트 할 때 SSL을 통해 PUT 요청을 발행하고 요청 본문에 적절한 JSON 콘텐츠를 할당하고 Content-Type
요청 헤더를 application/json
으로 지정합니다.토큰을 사용하여 API 인증
다음으로 API는 여러 가지 이유로 사용자의 이메일과 비밀번호를 사용하거나 API 토큰과 함께 사용자의 이메일 주소를 사용하여 최종 사용자로 인증하도록 사용자에게 지시합니다.
@id = params[:id]
@comment_body = params[:comment]
uri = URI.parse "https://{subdomain}.zendesk.com/api/v2/requests/#{@id}.json"
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
req = Net::HTTP::Put.new(uri.request_uri)
req.body = '{"request": {"comment":{"value":' + "\"#{@comment_body}\"" + '}}}'
req['Content-Type'] = 'application/json'
#The following two lines do not work!
credentials = Base64::encode64("{user_email}/token:{api_token}")
request.headers['Authorization'] = "BasiC#{credentials}"
response = http.request(req)
이 API는 API 토큰을 사용하여 인증을위한 형식이 {user_email}/token:{api_token}
임을 지정 : 다음은 인증 헤더와 API에 권한을 부여하는 나의 시도이다. 해당 형식을 Base64::encode64
으로 인코딩하고 Basic
앞에 오는 인증 헤더에 전달했지만 응답은 401 Unauthorized입니다. 그러나 그 두 줄을 req.basic_auth {user_email}, {user_password}
으로 바꾸면 문제가 없습니다.
내 질문에 사용자의 이메일과 비밀번호를 req.basic_auth
에 제공하는 대신 이메일과 주어진 API 토큰을 인증으로 사용하여 다른 사용자로 인증하려면 어떻게해야합니까?
내가 주제에 대해 수행 한 인터넷 검색 결과는 거의 알려지지 않았습니다. 일반적으로 API 토큰보다 Authorization 헤더를 처리 할 때는 일반 {username}:{password}
형식을 사용하는 것이 더 일반적입니다.
미리 감사드립니다.
업데이트 : 이상하게, request.headers['Authorize'] = "BasiC#{credentials}"
이처럼 권한을 부여하는 동안 401 무단 오류 또는 WWW 인증 헤더를 반환하지 않습니다 req['Authorization'] = "BasiC#{credentials}"
와 최종 사용자로 인증하려고합니다.