omniauth-saml 1.4.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of omniauth-saml might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0bcfa19e2be2f6691b84c032354fed50f9638777
4
- data.tar.gz: 1074172e663efe15a0fad598211de088f1fc3f10
3
+ metadata.gz: 2974eb31e16837cace7a25f6b94f4fc6b0e35fb9
4
+ data.tar.gz: db9560dbfc1cfe42fe9f01ed03aad459aa11e528
5
5
  SHA512:
6
- metadata.gz: b53e494e84dd5e2640026c347962824e091773f978dd1dee0d09596a269988a142d1afdd17627581a46bd918cc4921cee526ad871740cc9cfc1a2449ce9ea130
7
- data.tar.gz: 496c67b355db754816a43f120d49091fbd0123c06bb5c877043087c0ce4ced5362a8bca9e3f8df366ec83e4fda7242dff20fffd728509a1a4dbfa5719f4d0ffc
6
+ metadata.gz: 80afb434850d5cdf2f26d3cf3612d5d5cd7b45a494faae1f721f9d127466da32db08dbcbaf2d235d4f18041728f469115e8403e60e95993828538f3363f82030
7
+ data.tar.gz: 1605a7ff623a28f00e69a649f0882bde4fb43efcc118a8df13e7ec3f808af32105ce49bd6adf43ab4c8bfd2cf8e7235ddd0c179172451b9e5a51a703ea1e28f5
data/README.md CHANGED
@@ -94,8 +94,30 @@ The service provider metadata used to ease configuration of the SAML SP in the I
94
94
  If not specified, the IdP is free to choose the name identifier format used
95
95
  in the response. Optional.
96
96
 
97
+ * `:request_attributes` - Used to build the metadata file to inform the IdP to send certain attributes
98
+ along with the SAMLResponse messages. Defaults to requesting `name`, `first_name`, `last_name` and `email`
99
+ attributes. See the `OneLogin::RubySaml::AttributeService` class in the [Ruby SAML gem](https://github.com/onelogin/ruby-saml) for the available options for each attribute. Set to `{}` to disable this from metadata.
100
+
101
+ * `:attribute_service_name` - Name for the attribute service. Defaults to `Required attributes`.
102
+
97
103
  * See the `OneLogin::RubySaml::Settings` class in the [Ruby SAML gem](https://github.com/onelogin/ruby-saml) for additional supported options.
98
104
 
105
+ ## Devise Integration
106
+
107
+ Straightforward integration with [Devise](https://github.com/plataformatec/devise), the widely-used authentication solution for Rails.
108
+
109
+ In `config/initializers/devise.rb`:
110
+
111
+ ```ruby
112
+ Devise.setup do |config|
113
+ config.omniauth :saml,
114
+ idp_cert_fingerprint: 'fingerprint',
115
+ idp_sso_target_url: 'target_url'
116
+ end
117
+ ```
118
+
119
+ Then follow Devise's general [OmniAuth tutorial](https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview), replacing references to `facebook` with `saml`.
120
+
99
121
  ## Authors
100
122
 
101
123
  Authored by [Rajiv Aaron Manglani](http://www.rajivmanglani.com/), Raecoo Cao, Todd W Saxton, Ryan Wilcox, Steven Anderson, Nikos Dimitrakopoulos, Rudolf Vriend and [Bruno Pedro](http://brunopedro.com/).
@@ -1,5 +1,5 @@
1
1
  module OmniAuth
2
2
  module SAML
3
- VERSION = '1.4.0'
3
+ VERSION = '1.4.1'
4
4
  end
5
5
  end
@@ -8,6 +8,13 @@ module OmniAuth
8
8
 
9
9
  option :name_identifier_format, nil
10
10
  option :idp_sso_target_url_runtime_params, {}
11
+ option :request_attributes, [
12
+ { name: 'email', name_format: 'urn:oasis:names:tc:SAML:2.0:attrname-format:basic', friendly_name: 'Email address' },
13
+ { name: 'name', name_format: 'urn:oasis:names:tc:SAML:2.0:attrname-format:basic', friendly_name: 'Full name' },
14
+ { name: 'first_name', name_format: 'urn:oasis:names:tc:SAML:2.0:attrname-format:basic', friendly_name: 'Given name' },
15
+ { name: 'last_name', name_format: 'urn:oasis:names:tc:SAML:2.0:attrname-format:basic', friendly_name: 'Family name' }
16
+ ]
17
+ option :attribute_service_name, 'Required attributes'
11
18
 
12
19
  def request_phase
13
20
  options[:assertion_consumer_service_url] ||= callback_url
@@ -81,6 +88,12 @@ module OmniAuth
81
88
 
82
89
  response = OneLogin::RubySaml::Metadata.new
83
90
  settings = OneLogin::RubySaml::Settings.new(options)
91
+ if options.request_attributes.length > 0
92
+ settings.attribute_consuming_service.service_name options.attribute_service_name
93
+ options.request_attributes.each do |attribute|
94
+ settings.attribute_consuming_service.add_attribute attribute
95
+ end
96
+ end
84
97
  Rack::Response.new(response.generate(settings), 200, { "Content-Type" => "application/xml" }).finish
85
98
  else
86
99
  call_app!
@@ -20,7 +20,14 @@ describe OmniAuth::Strategies::SAML, :type => :strategy do
20
20
  :idp_sso_target_url => "https://idp.sso.target_url/signon/29490",
21
21
  :idp_cert_fingerprint => "C1:59:74:2B:E8:0C:6C:A9:41:0F:6E:83:F6:D1:52:25:45:58:89:FB",
22
22
  :idp_sso_target_url_runtime_params => {:original_param_key => :mapped_param_key},
23
- :name_identifier_format => "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"
23
+ :name_identifier_format => "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress",
24
+ :request_attributes => [
25
+ { name: 'email', name_format: 'urn:oasis:names:tc:SAML:2.0:attrname-format:basic', friendly_name: 'Email address' },
26
+ { name: 'name', name_format: 'urn:oasis:names:tc:SAML:2.0:attrname-format:basic', friendly_name: 'Full name' },
27
+ { name: 'first_name', name_format: 'urn:oasis:names:tc:SAML:2.0:attrname-format:basic', friendly_name: 'Given name' },
28
+ { name: 'last_name', name_format: 'urn:oasis:names:tc:SAML:2.0:attrname-format:basic', friendly_name: 'Family name' }
29
+ ],
30
+ :attribute_service_name => 'Required attributes'
24
31
  }
25
32
  end
26
33
  let(:strategy) { [OmniAuth::Strategies::SAML, saml_options] }
@@ -157,5 +164,12 @@ describe OmniAuth::Strategies::SAML, :type => :strategy do
157
164
  last_response.status.should == 200
158
165
  last_response.header["Content-Type"].should == "application/xml"
159
166
  end
167
+
168
+ it 'should configure attributes consuming service' do
169
+ last_response.body.should match /AttributeConsumingService/
170
+ last_response.body.should match /first_name/
171
+ last_response.body.should match /last_name/
172
+ last_response.body.should match /Required attributes/
173
+ end
160
174
  end
161
175
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-saml
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Raecoo Cao
@@ -14,7 +14,7 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2015-07-23 00:00:00.000000000 Z
17
+ date: 2015-08-09 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: omniauth
@@ -120,10 +120,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
120
  version: '0'
121
121
  requirements: []
122
122
  rubyforge_project:
123
- rubygems_version: 2.2.2
123
+ rubygems_version: 2.4.3
124
124
  signing_key:
125
125
  specification_version: 4
126
126
  summary: A generic SAML strategy for OmniAuth.
127
127
  test_files:
128
128
  - spec/omniauth/strategies/saml_spec.rb
129
129
  - spec/spec_helper.rb
130
+ has_rdoc: