OmniAuth Tipalti
Strategy to authenticate with Tipalti via OAuth2 in OmniAuth.
Installation
Add to your Gemfile
:
gem 'omniauth-tipalti'
Then bundle install
.
Tipalti Setup
Visit the Tipalti Developer portal and create your developer application.
Make note of your Client ID and Client Secret.
Make sure you set your Return URL to the full path to your application.
Usage
For additional information, refer to the OmniAuth wiki.
Rails
Standard
Here's an example for adding the middleware to a Rails app in config/initializers/omniauth.rb
:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :tipalti,
ENV['TIPALTI_CLIENT_ID'],
ENV['TIPALTI_CLIENT_SECRET'],
redirect_uri: Rails.application.routes.url_helpers.my_integration_response_url
end
You can now access the OmniAuth Tipalti OAuth2 URL: /auth/tipalti
If you are using a Tipalti sandbox applicaiton, you can optionally set the site:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :tipalti,
...
client_options: {
site: ' https://sso.sandbox.tipalti.com',
},
...
end
Dynamic
If your Rails application needs to support multiple Tipalti applications, you can pass in your configuration dynamically:
Rails.application.config.middleware.use OmniAuth::Builder do
TIPALTI_SETUP_PROC = lambda do |env|
request = Rack::Request.new(env)
# Load dynamic content into dynamic_content
env['omniauth.strategy'].options[:client_id] = dynamic_content.client_id
env['omniauth.strategy'].options[:client_secret] = dynamic_content.client_secret
end
provider :tipalti,
redirect_uri: Rails.application.routes.url_helpers.my_integration_response_url
setup: TIPALTI_SETUP_PROC
end
Configuration
You can configure several options, which you pass in to the provider
method via a hash:
scope
: A space-separated list of permissions you want to request from the user.redirect_uri
: Override the redirect_uri used by the gem. Note this must match exactly what you specified in the WhoPlusYou Developer Portal in your Client Domains setting.
License
Copyright (C) 2023 Jordan Ell. See LICENSE for details.