포도 API 및 OAuth (Grape API and OAuth)


문제 설명

포도 API 및 OAuth (Grape API and OAuth)

I'm working on creating API for my rails application using Grape framework. I'm trying different authentication possibilities. Can someone give a simple example of using OAuth for authentication?


참조 솔루션

방법 1:

hi there here do you have an example

https://github.com/opperator/warden‑oauth2

방법 2:

More actual example you can find in GrapeOAuth2 gem. All you need is to create 3 models that will represent your clients, tokens and resource owners, mount default endpoints and protect your API.

So create 3 models for used ORM and mount default OAuth2 tokens endpoint to your API:

module Twitter
  class API < Grape::API
    version 'v1', using: :path
    format :json
    prefix :api

    helpers GrapeOAuth2::Helpers::AccessTokenHelpers

    # What to do if somebody will request an API with access_token
    # Authenticate token and raise an error in case of authentication error
    use Rack::OAuth2::Server::Resource::Bearer, 'OAuth API' do |request|
      AccessToken.authenticate(request.access_token) || request.invalid_token!
    end

    # Mount default Grape OAuth2 Token endpoint
    mount GrapeOAuth2::Endpoints::Token

    # ...
  end
end

Available routes:

POST /oauth/token
POST /oauth/revoke

And then protect required endpoints with access_token_required! method:

module Twitter
  module Resources
    class Status < Grape::API
      before do
        access_token_required!
      end

      resources :status do
        get do
          { current_user: current_resource_owner.username }
        end
      end
    end
  end
end

Take a look at the README for  more detailed examples (simple one and customizable).

(by ProstakovHashDog TeamVladimir Victorovich)

참조 문서

  1. Grape API and OAuth (CC BY‑SA 3.0/4.0)

#OAuth #authentication #ruby-on-rails #ruby-grape






관련 질문

포도 API 및 OAuth (Grape API and OAuth)

단일 사용자 계정에 대해 동일한 타사 애플리케이션을 여러 번 승인하는 방법은 무엇입니까? (How to handle authorizing the same third-party application multiple times for a single user account?)

Google OAuth의 액세스 토큰 만료 시간대 (Google OAuth's access token's expiry timezone)

Facebook에서 앱 ID를 얻는 방법 (How to get app id on Facebook)

새로 고침 토큰을 사용하여 백그라운드에서 인증을 받고 액세스 토큰을 얻는 방법은 무엇입니까? (How to use refresh token to get authorized in background and getting access token?)

JSON 웹 토큰을 사용하여 Chrome 확장 프로그램에서 내 앱으로 POST 요청을 인증하는 방법은 무엇입니까? (How to authenticate a POST request from a chrome extension to my app with JSON web tokens?)

LAN 내부에 인증 자동 기능이 있는 Grails 애플리케이션을 테스트할 수 없습니다. (Cannot test Grails application which has oauth autontication inside LAN)

신뢰할 수 없는 호스트를 사용하여 방화벽에서 보안 연결을 중개하는 방법은 무엇입니까? (How to broker secure connection across firewalls using untrusted host?)

로컬 HTML 파일에서 oAuth 흐름을 처리합니까? (Handling an oAuth flow from local HTML files?)

Twitter4J로 인증하는 방법은 무엇입니까? (how to authenticate with Twitter4J?)

IdentityServer4를 사용할 때 "코드 챌린지 필요" 메시지가 나타납니다. (I am getting "code challenge required" when using IdentityServer4)

Apache Superset 및 Auth0은 "브라우저(또는 프록시)가 이 서버가 이해할 수 없는 요청을 보냈습니다."를 반환합니다. (Apache Superset and Auth0 returns "The browser (or proxy) sent a request that this server could not understand.")







코멘트