Amazon SSO added

This commit is contained in:
Christoph Haas 2017-04-17 13:11:44 +02:00
parent 2a7491edcd
commit 65723d3063
7 changed files with 25 additions and 3 deletions

View file

@ -117,7 +117,7 @@ gem "sprockets"
# Authentication against Google, Facebook and others # Authentication against Google, Facebook and others
gem 'omniauth' gem 'omniauth'
# gem 'omniauth-amazon' gem 'omniauth-amazon'
gem 'omniauth-google-oauth2' gem 'omniauth-google-oauth2'
# gem 'omniauth-github' # gem 'omniauth-github'
# gem 'omniauth-twitter' # gem 'omniauth-twitter'

View file

@ -170,6 +170,9 @@ GEM
omniauth (1.6.1) omniauth (1.6.1)
hashie (>= 3.4.6, < 3.6.0) hashie (>= 3.4.6, < 3.6.0)
rack (>= 1.6.2, < 3) rack (>= 1.6.2, < 3)
omniauth-amazon (1.0.1)
omniauth (~> 1.0)
omniauth-oauth2 (~> 1.1)
omniauth-google-oauth2 (0.4.1) omniauth-google-oauth2 (0.4.1)
jwt (~> 1.5.2) jwt (~> 1.5.2)
multi_json (~> 1.3) multi_json (~> 1.3)
@ -326,6 +329,7 @@ DEPENDENCIES
minitest-rails minitest-rails
minitest-reporters minitest-reporters
omniauth omniauth
omniauth-amazon
omniauth-google-oauth2 omniauth-google-oauth2
omniauth-openid omniauth-openid
paperclip paperclip

View file

@ -9,7 +9,11 @@ Documentation on omniauth:
https://github.com/omniauth/omniauth/wiki/List-of-Strategies https://github.com/omniauth/omniauth/wiki/List-of-Strategies
https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview
## Google+ List of strategies:
https://github.com/omniauth/omniauth/wiki/List-of-Strategies
## Google
The client ID for the debshots and the private key must be set as environment The client ID for the debshots and the private key must be set as environment
variables before running the application: variables before running the application:
@ -19,6 +23,13 @@ variables before running the application:
## Amazon ## Amazon
The client ID for the debshots and the secret must be set as environment
variables before running the application:
* AMAZON_CLIENT_ID=…
* AMAZON_CLIENT_SECRET=…
Client ID: Client ID:
amzn1.application-oa2-client.78d832919fc24456b0636762cf18efd9 amzn1.application-oa2-client.78d832919fc24456b0636762cf18efd9

View file

@ -15,6 +15,10 @@ class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
login_via 'Google' login_via 'Google'
end end
def amazon
login_via 'Amazon'
end
def login_via(provider_name) def login_via(provider_name)
# You need to implement the method below in your model (e.g. app/models/user.rb) # You need to implement the method below in your model (e.g. app/models/user.rb)
@user = User.from_omniauth(request.env["omniauth.auth"]) @user = User.from_omniauth(request.env["omniauth.auth"])

View file

@ -13,7 +13,8 @@ class User < ApplicationRecord
:omniauthable, :omniauth_providers => [ :omniauthable, :omniauth_providers => [
:launchpad, :launchpad,
:stackexchange, :stackexchange,
:google_oauth2 :google_oauth2,
:amazon
] ]

View file

@ -40,6 +40,7 @@
= link_to "Sign in with Launchpad", user_launchpad_omniauth_authorize_path = link_to "Sign in with Launchpad", user_launchpad_omniauth_authorize_path
= link_to "Sign in with StackExchange", user_stackexchange_omniauth_authorize_path = link_to "Sign in with StackExchange", user_stackexchange_omniauth_authorize_path
= link_to "Sign in with Google", user_google_oauth2_omniauth_authorize_path = link_to "Sign in with Google", user_google_oauth2_omniauth_authorize_path
= link_to "Sign in with Amazon", user_amazon_omniauth_authorize_path
/ div / div
/ = link_to image_tag('/images/sso/google.png'), user_google_oauth2_omniauth_authorize_path / = link_to image_tag('/images/sso/google.png'), user_google_oauth2_omniauth_authorize_path

View file

@ -281,6 +281,7 @@ Devise.setup do |config|
config.omniauth :open_id, name: :stackexchange, identifier: 'https://openid.stackexchange.com', :client_options => {:ssl => {:ca_path => '/etc/ssl/certs'}} config.omniauth :open_id, name: :stackexchange, identifier: 'https://openid.stackexchange.com', :client_options => {:ssl => {:ca_path => '/etc/ssl/certs'}}
config.omniauth :open_id, name: :launchpad, identifier: 'https://login.ubuntu.com', :client_options => {:ssl => {:ca_path => '/etc/ssl/certs'}} config.omniauth :open_id, name: :launchpad, identifier: 'https://login.ubuntu.com', :client_options => {:ssl => {:ca_path => '/etc/ssl/certs'}}
config.omniauth :amazon, ENV['AMAZON_CLIENT_ID'], ENV['AMAZON_CLIENT_SECRET'], :client_options => {:ssl => {:ca_path => '/etc/ssl/certs'}}
# client_options: {ssl: {ca_path: '/etc/ssl/certs'}} # client_options: {ssl: {ca_path: '/etc/ssl/certs'}}
end end