OmniAuth::OpenIDConnect
Originally was omniauth-openid-connect
I've forked this repository and launch as separate gem because maintaining of original was dropped.
Installation
Add this line to your application's Gemfile:
gem 'omniauth_openid_connect'
And then execute:
$ bundle
Or install it yourself as:
$ gem install omniauth_openid_connect
Usage
Example configuration
config.omniauth :openid_connect, {
name: :my_provider,
scope: [:openid, :email, :profile, :address],
response_type: :code,
uid_field: "preferred_username",
client_options: {
port: 443,
scheme: "https",
host: "myprovider.com",
identifier: ENV["OP_CLIENT_ID"],
secret: ENV["OP_SECRET_KEY"],
redirect_uri: "http://myapp.com/users/auth/openid_connect/callback",
},
}
Configuration details:
nameis arbitrary, I recommend using the name of your provider. The name configuration exists because you could be using multiple OpenID Connect providers in a single app.
NOTE: if you use this gem with Devise you should use :openid_connect name,
or Devise would route to 'users/auth/:provider' rather than 'users/auth/openid_connect'
response_typetells the authorization server which grant type the application wants to use, currently, only:code(Authorization Code grant) and:id_token(Implicit grant) are valid.- If you want to pass
stateparamete by yourself. You can set Proc Object. e.g.state: Proc.new { SecureRandom.hex(32) } nonceis optional. If don't want to pass "nonce" parameter to provider, You should specifyfalsetosend_nonceoption. (default true)- Support for other client authentication methods. If don't specified
:client_auth_methodoption, automatically set:basic. - Use "OpenID Connect Discovery", You should specify
truetodiscoveryoption. (default false) - In "OpenID Connect Discovery", generally provider should have Webfinger endpoint.
If provider does not have Webfinger endpoint, You can specify "Issuer" to option.
e.g.
issuer: "https://myprovider.com"It means to get configuration from "https://myprovider.com/.well-known/openid-configuration". - The uid is by default using the
subvalue from theuser_inforesponse, which in some applications is not the expected value. To avoid such limitations, the uid label can be configured by providing the omniauthuid_fieldoption to a different label (i.e.preferred_username) that appears in theuser_infodetails. - The
issuerproperty should exactly match the provider's issuer link. - The
response_modeoption is optional and specifies how the result of the authorization request is formatted.
For the full low down on OpenID Connect, please check out the spec.
Contributing
- Fork it ( http://github.com/m0n9oose/omniauth-openid-connect/fork )
- Create your feature branch (
git checkout -b my-new-feature) - Cover your changes with tests and make sure they're green (
bundle install && bundle exec rake test) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create new Pull Request
