'openid-connect client in ruby with example code

I want to read data from an API which requires authorization with openid-connect. My client should be written in ruby, so I can use it in a task to import data into my rails app.

I am given a configuration under theapi/.well-known/openid-configuration along with a client_id and a client_secret.

Having never worked with openid before I did some research an found the following gems that might help to obtain an auth token:

Both gems lack of any documentation or examples to get started, in fact I am not even sure if they are useful for my case.

Also there is a similar SO-post, but it's five years old with zero answers: Ruby Openid connect library with client consumption example

Could anybody help me out with a simple example on how to authorize against openid_connect in ruby, possibly using one of the mentioned gems?



Solution 1:[1]

I had the same issue and found a nice tutorial to solve this challenge FusionAuth

You require these 2 gems in your gemfile: gem 'jwt' and gem 'oauth2'

You will also be able to initialize the OAuth Client while replacing actual values of your Identity Server:

@oauth_client = OAuth2::Client.new(Rails.configuration.x.oauth.client_id,
                                   Rails.configuration.x.oauth.client_secret,
                                   authorize_url: '/oauth2/authorize',
                                   site: Rails.configuration.x.oauth.idp_url,
                                   token_url: '/oauth2/token',
                                   redirect_uri: Rails.configuration.x.oauth.redirect_uri)

With the OAuthClient initalised you can be able to perform your desired OAuth Flow.

For Authorization with password_credentials you can use:

response = @oauth_client.client_credentials.get_token
token = response.token

You can find more Authorization Type References here: OAuth2 Docs

These two resources should enable you to complete your integration with any IdentityServer. Hope these resources stay updated.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Mark Kariuki