Skip to content
Extraits de code Groupes Projets
Valider 724f3260 rédigé par theworldbright's avatar theworldbright
Parcourir les fichiers

Add nonce to auth code flow

parent bb8fe6aa
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -38,7 +38,7 @@ module Api ...@@ -38,7 +38,7 @@ module Api
# TODO: Add support for request object # TODO: Add support for request object
end end
def create_id_token(nonce=nil) def create_id_token
id_tokens.create!(nonce: nonce) id_tokens.create!(nonce: nonce)
end end
......
...@@ -6,6 +6,7 @@ class CreateAuthorizations < ActiveRecord::Migration ...@@ -6,6 +6,7 @@ class CreateAuthorizations < ActiveRecord::Migration
t.string :refresh_token t.string :refresh_token
t.string :code t.string :code
t.string :redirect_uri t.string :redirect_uri
t.string :nonce
t.timestamps null: false t.timestamps null: false
end end
......
...@@ -69,6 +69,7 @@ ActiveRecord::Schema.define(version: 20150801074555) do ...@@ -69,6 +69,7 @@ ActiveRecord::Schema.define(version: 20150801074555) do
t.string "refresh_token", limit: 255 t.string "refresh_token", limit: 255
t.string "code", limit: 255 t.string "code", limit: 255
t.string "redirect_uri", limit: 255 t.string "redirect_uri", limit: 255
t.string "nonce", limit: 255
t.datetime "created_at", null: false t.datetime "created_at", null: false
t.datetime "updated_at", null: false t.datetime "updated_at", null: false
end end
......
...@@ -23,6 +23,7 @@ module Api ...@@ -23,6 +23,7 @@ module Api
def approved!(req, res) def approved!(req, res)
auth = OpenidConnect::Authorization.find_or_create_by( auth = OpenidConnect::Authorization.find_or_create_by(
o_auth_application: @o_auth_application, user: @user, redirect_uri: @redirect_uri) o_auth_application: @o_auth_application, user: @user, redirect_uri: @redirect_uri)
auth.nonce = req.nonce
auth.scopes << @scopes auth.scopes << @scopes
handle_approved_response_type(auth, req, res) handle_approved_response_type(auth, req, res)
res.approve! res.approve!
...@@ -32,7 +33,7 @@ module Api ...@@ -32,7 +33,7 @@ module Api
response_types = Array(req.response_type) response_types = Array(req.response_type)
handle_approved_auth_code(auth, res, response_types) handle_approved_auth_code(auth, res, response_types)
handle_approved_access_token(auth, res, response_types) handle_approved_access_token(auth, res, response_types)
handle_approved_id_token(auth, req, res, response_types) handle_approved_id_token(auth, res, response_types)
end end
def handle_approved_auth_code(auth, res, response_types) def handle_approved_auth_code(auth, res, response_types)
...@@ -45,9 +46,9 @@ module Api ...@@ -45,9 +46,9 @@ module Api
res.access_token = auth.create_access_token res.access_token = auth.create_access_token
end end
def handle_approved_id_token(auth, req, res, response_types) def handle_approved_id_token(auth, res, response_types)
return unless response_types.include?(:id_token) return unless response_types.include?(:id_token)
id_token = auth.create_id_token(req.nonce) id_token = auth.create_id_token
auth_code_value = res.respond_to?(:code) ? res.code : nil auth_code_value = res.respond_to?(:code) ? res.code : nil
access_token_value = res.respond_to?(:access_token) ? res.access_token : nil access_token_value = res.respond_to?(:access_token) ? res.access_token : nil
res.id_token = id_token.to_jwt(code: auth_code_value, access_token: access_token_value) res.id_token = id_token.to_jwt(code: auth_code_value, access_token: access_token_value)
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter