omniauth-mpassid 0.5.1 → 0.6.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6c9ea1c51d3ddc3c48696d8fa28047dbd410f9a59418cb7f4518c579533d36ad
4
- data.tar.gz: c2dc1ef5792ac9363beb524f3e608c19364e7a711e8e2a98e4c57d2bc0919a07
3
+ metadata.gz: 50b9b5c7f66fc026d4c99975dacd6b4ed74fa375eeaaf9cac28b3d326bf16d3e
4
+ data.tar.gz: 6181a71513c88a33ebfb549a1b4f3a596e892e1e4e24fbf78f783df7313e5507
5
5
  SHA512:
6
- metadata.gz: f71ab3a1cb4a99f7ad90071c21742b9203f437496f1ebb9b87a6c402e2d2751458e834f27e35ec8691518ebcd2c2a8a8f4064ff6ecc5efd9943fcb94821a81c8
7
- data.tar.gz: 165be346329403c8486d526ca2bcbe6c0b9c630f78b81b325843914523f028bd62dfb28007d5b85e370e55ce12551ff3811a19fb39bde216c2e09f1f99b2505e
6
+ metadata.gz: 073c27bedb1e4cbb13b5f40fc5683bea48507bf348ac69e32eb585d2d127d78ddc6ea9bf1dda0945189001562967ff24382da382bd825d3357fe8653ac8d2c56
7
+ data.tar.gz: 5c30c4c96e99c713872f79b64ed3a3c80787d0a014902f766b47b2abc17c06975802e86b2319bed393f62211d623b65c07282cbe6b0d159065cfc14e4ecdb152
data/README.md CHANGED
@@ -84,6 +84,13 @@ Devise.setup do |config|
84
84
  end
85
85
  ```
86
86
 
87
+ ## Testing
88
+
89
+ Once the gem is installed and configured properly, it can be tested with the
90
+ test accounts available at:
91
+
92
+ https://wiki.eduuni.fi/display/OPHPALV/Test+accounts+available+for+testing
93
+
87
94
  ## Identification Responses
88
95
 
89
96
  The user's data is transmitted from MPASSid in the SAML authentication
@@ -109,12 +116,11 @@ The user's personal information transmitted from MPASSid can be found under
109
116
  the `:saml_attributes` key in the OmniAuth extra hash described above.
110
117
 
111
118
  This attributes hash will contain the keys described in this following
112
- sub-sections. The keys marked as `(undocumented)` are not described in the
113
- MPASSid's own documentation but are available at least in some SAML responses.
119
+ sub-sections.
114
120
 
115
121
  See also the MPASSid data models documentation for more information:
116
122
 
117
- https://wiki.eduuni.fi/display/CSCMPASSID/Data+models
123
+ https://wiki.eduuni.fi/display/OPHPALV/MPASSid%3An+tietomalli
118
124
 
119
125
  The attributes can be either single or multi type defining whether they can
120
126
  have a single or multiple values. The single type values are strings and multi
@@ -128,15 +134,15 @@ is `nil` for both types.
128
134
  - SAML FriendlyName: givenName
129
135
  - Type: Single (`String`)
130
136
 
131
- The first/given name of the user.
137
+ The given name of the user.
132
138
 
133
- #### `:first_names`
139
+ #### `:first_name`
134
140
 
135
- - SAML URI: http://eidas.europa.eu/attributes/naturalperson/CurrentGivenName
136
- - SAML FriendlyName: firstName
141
+ - SAML URI: urn:mpass.id:nickname
142
+ - SAML FriendlyName: nickname
137
143
  - Type: Single (`String`)
138
144
 
139
- All the first/given names of the user.
145
+ The first name / calling name / nickname of the user.
140
146
 
141
147
  #### `:last_name`
142
148
 
@@ -146,39 +152,45 @@ All the first/given names of the user.
146
152
 
147
153
  The last/family name of the user.
148
154
 
149
- #### `:municipality_code`
155
+ #### `:provider_info`
150
156
 
151
- - SAML URI: urn:mpass.id:municipalityCode
152
- - SAML FriendlyName: municipalityCode
153
- - Type: Multi (`Array`)
157
+ - SAML URI: urn:mpass.id:educationProviderInfo
158
+ - SAML FriendlyName: mpassEducationProviderInfo
159
+ - Type: Multi (`Array<String>`)
154
160
 
155
- The municipality codes of the authenticated user.
161
+ Information about the educational provider, each value contains multiple fields
162
+ separated with a semicolon (`;`) character.
156
163
 
157
- See:
164
+ For instance `1.2.246.562.10.494695390410;Virallinen nimi`.
158
165
 
159
- http://tilastokeskus.fi/meta/luokitukset/kunta/001-2017/index.html
166
+ The description of the fields:
160
167
 
161
- #### `:municipality_name`
168
+ 1. The educational provider's OID as specified at the link below (`KOULUTUSTOIMIJA`)
169
+ 2. The educational provider's name as specified at the link below
162
170
 
163
- - SAML URI: one of the following (first found attribute)
164
- * urn:mpass.id:municipality
165
- * urn:educloudalliance.org:municipality
166
- - SAML FriendlyName: one of the following (first found attribute)
167
- * N/A
168
- * ecaMunicipality
169
- - Type: Multi (`Array`)
171
+ The OIDs and information for these OIDs can be found from:
170
172
 
171
- The human-readable names of the municipalities of the authenticated user.
173
+ https://virkailija.opintopolku.fi/organisaatio-service/swagger-ui/index.html
172
174
 
173
- #### `:school_code`
175
+ #### `:school_info`
174
176
 
175
- - SAML URI: urn:mpass.id:municipalityCode
176
- - SAML FriendlyName: N/A
177
- - Type: Multi (`Array`)
177
+ - SAML URI: urn:mpass.id:schoolInfo
178
+ - SAML FriendlyName: mpassSchoolInfo
179
+ - Type: Multi (`Array<String>`)
180
+
181
+ Information about the school, each value contains multiple fields separated with
182
+ a semicolon (`;`) character.
178
183
 
179
- The school codes of the authenticated user.
184
+ The values are provided in both of the following formats as separate values:
180
185
 
181
- See (JSON format):
186
+ - `30076;Mansikkalan testi peruskoulu`
187
+ - `1.2.246.562.99.00000000002;Mansikkalan testi peruskoulu`
188
+
189
+ ##### First format
190
+
191
+ The first value format specifies the national educational institution code as
192
+ the first column separated with a semicolon (`;`) as specified at the national
193
+ educational institution registry.
182
194
 
183
195
  For the list of codes, see:
184
196
 
@@ -189,37 +201,57 @@ An example for a single school code (04647), JSON format:
189
201
 
190
202
  https://virkailija.opintopolku.fi/koodisto-service/rest/codeelement/oppilaitosnumero_04647
191
203
 
192
- #### `:school_name`
204
+ ##### Second format
193
205
 
194
- - SAML URI: urn:mpass.id:school
195
- - SAML FriendlyName: school
196
- - Type: Multi (`Array`)
206
+ The second value format specifies the OID of the educational institution as
207
+ the first column separated with a semicolon (`;`). These values are specified
208
+ at (filter with `OPPILAITOS`):
197
209
 
198
- The human-readable names of the schools of the authenticated user.
210
+ https://virkailija.opintopolku.fi/organisaatio-service/swagger-ui/index.html
199
211
 
200
- #### `:class`
212
+ #### `:class_level`
201
213
 
202
- - SAML URI: one of the following (first found attribute)
203
- * urn:mpass.id:class
204
- * urn:educloudalliance.org:group
205
- - SAML FriendlyName: one of the following (first found attribute)
206
- * N/A
207
- * ecaGroup
208
- - Type: Multi (`Array`)
214
+ - SAML URI: urn:mpass.id:classLevel
215
+ - SAML FriendlyName: N/A
216
+ - Type: Single (`String`)
209
217
 
210
- The class/group-information of the authenticated user.
218
+ The class level information (0-10) of the authenticated user.
211
219
 
212
- For instance: 8A or 3B.
220
+ For instance 8 or 3.
213
221
 
214
- #### `:class_level`
222
+ For further information, see:
223
+
224
+ https://www.stat.fi/meta/kas/vuosiluokka.html
225
+
226
+ This information is available for pre-primary education and comprehensive
227
+ education students.
228
+
229
+ This information is not available for secondary level students (upper secondary
230
+ education or vocational education).
231
+
232
+ #### `:learning_materials_charge`
215
233
 
216
234
  - SAML URI: urn:mpass.id:classLevel
217
235
  - SAML FriendlyName: N/A
218
- - Type: Multi (`Array`)
236
+ - Type: Multi (`Array<String>`)
219
237
 
220
- The class/level-information of the authenticated user.
238
+ Specifies for secondary level education pupils whether their learning materials
239
+ are paid or not, each value contains multiple fields separated with a semicolon
240
+ (`;`) character.
221
241
 
222
- For instance 8 or 3.
242
+ The values are provided in both of the following formats as separate values:
243
+
244
+ - `0;00000`
245
+ - `0;1.2.246.562.99.00000000003`
246
+
247
+ Similarly to the `:school_info` field, the values are provided with the national
248
+ educational institution code as well as the educational institution's OID.
249
+
250
+ The first column specifies the value for the field which is explained as
251
+ follows:
252
+
253
+ - `0` = Learning material is free for the pupil
254
+ - `1` = Learning material is paid for the pupil
223
255
 
224
256
  #### `:role`
225
257
 
@@ -229,33 +261,34 @@ For instance 8 or 3.
229
261
  - SAML FriendlyName: one of the following (first found attribute)
230
262
  * N/A
231
263
  * ecaStructuredRole
232
- - Type: Multi (`Array`)
264
+ - Type: Multi (`Array<String>`)
233
265
 
234
266
  The roles of the user in four parts, divided with a semicolon (;) character.
235
267
  First municipality, followed by school code, group and role in the group.
236
268
 
237
- For instance Helsinki;32132;9A;Oppilas.
269
+ For instance `1.2.246.562.99.00000000001;00000;1A;Oppilas;1;1.2.246.562.99.00000000003;`.
238
270
 
239
- #### `:role_name` (undocumented)
271
+ Each value consists of the following fields:
240
272
 
241
- - SAML URI: urn:educloudalliance.org:role
242
- - SAML FriendlyName: ecaRole
243
- - Type: Multi (`Array`)
273
+ 1. Educational provider OID (e.g. `1.2.246.562.99.00000000001`)
274
+ 2. National educational institution code (e.g. `00000`)
275
+ 3. Class or group information of the pupil (e.g. `1A`)
276
+ 4. Role of the user (e.g. `Oppilas`)
277
+ 5. Role code of the user (e.g. `1`)
278
+ 6. Educational institution OID (e.g. `1.2.246.562.99.00000000003`)
279
+ 7. The office / branch OID (similar format as other OIDs, can be also empty)
244
280
 
245
- NOTE: This attribute is undocumented by MPASSid.
281
+ The OIDs for the educational provider (`KOULUTUSTOIMIJA`), educational
282
+ institution (`OPPILAITOS`) and office / branch (`TOIMIPISTE`) can be found from:
246
283
 
247
- The human readable names of the role (in Finnish).
284
+ https://virkailija.opintopolku.fi/organisaatio-service/swagger-ui/index.html
248
285
 
249
- For instance Oppilas.
250
-
251
- #### `:funet_person_learner_id` (undocumented)
286
+ #### `:learner_id`
252
287
 
253
288
  - SAML URI: urn:oid:1.3.6.1.4.1.16161.1.1.27
254
- - SAML FriendlyName: N/A
289
+ - SAML FriendlyName: learnerId
255
290
  - Type: Single (`String`)
256
291
 
257
- NOTE: This attribute is undocumented by MPASSid.
258
-
259
292
  11-digit identifier, which may be used to identify a person while storing,
260
293
  managing or transferring personal data.
261
294
 
@@ -263,6 +296,14 @@ See:
263
296
 
264
297
  https://wiki.eduuni.fi/display/CSCHAKA/funetEduPersonSchema2dot2#funetEduPersonSchema2dot2-funetEduPersonLearnerId
265
298
 
299
+ #### `:original_issuer`
300
+
301
+ Information about the user's home organization that is relying the information
302
+ to MPASSid. This information is added by the Finnish National Agency for
303
+ Education.
304
+
305
+ For instance `1.2.246.562.99.00000000001`.
306
+
266
307
  ## License
267
308
 
268
309
  MIT, see [LICENSE](LICENSE).
@@ -39,44 +39,41 @@ module OmniAuth
39
39
 
40
40
  # The request attributes for MPASSid
41
41
  option :request_attributes, [
42
- # The unique identifier of the authenticated user. Currently recommended
43
- # identifier for identifying the user. NOTE: will change if the user
44
- # moves to another user registry.
45
- # (single value)
46
- {
47
- name: 'urn:mpass.id:uid',
48
- name_format: 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri',
49
- friendly_name: 'mpassUsername'
50
- },
51
- # Funet EDU person learner ID
42
+ # The last/family name of the user.
52
43
  # (single value)
53
44
  {
54
- name: 'urn:oid:1.3.6.1.4.1.16161.1.1.27',
45
+ name: 'urn:oid:2.5.4.4',
55
46
  name_format: 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri',
56
- friendly_name: 'learnerId'
47
+ friendly_name: 'sn'
57
48
  },
58
- # The first/given name of the user.
49
+ # The given name of the user.
59
50
  # (single value)
60
51
  {
61
52
  name: 'urn:oid:2.5.4.42',
62
53
  name_format: 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri',
63
54
  friendly_name: 'givenName'
64
55
  },
65
- # All the first/given names of the user.
56
+ # The first name/nickname of the user (calling name / kutsumanimi).
66
57
  # (single value)
67
58
  {
68
- name: 'http://eidas.europa.eu/attributes/naturalperson/CurrentGivenName',
59
+ name: 'urn:mpass.id:nickname',
69
60
  name_format: 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri',
70
- friendly_name: 'firstName'
61
+ friendly_name: 'nickname'
71
62
  },
72
- # The last/family name of the user.
63
+ # The unique identifier of the authenticated user. Currently recommended
64
+ # identifier for identifying the user. NOTE: will change if the user
65
+ # moves to another user registry.
73
66
  # (single value)
74
67
  {
75
- name: 'urn:oid:2.5.4.4',
68
+ name: 'urn:mpass.id:uid',
76
69
  name_format: 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri',
77
- friendly_name: 'sn'
70
+ friendly_name: 'mpassUsername'
78
71
  },
79
- # The school code of the authenticated user. See
72
+ # Combination of the school code and official name of the educational
73
+ # institution separated with semicolon.
74
+ # For instance: 30076;Mansikkalan testi peruskoulu AND 1.2.246.562.99.00000000002;Mansikkalan testi peruskoulu
75
+ #
76
+ # Contains the school code of the authenticated user. See
80
77
  # https://virkailija.opintopolku.fi/koodisto-service/rest/json/oppilaitosnumero/koodi
81
78
  # (JSON format)
82
79
  # https://virkailija.opintopolku.fi/koodisto-service/rest/oppilaitosnumero/koodi
@@ -85,93 +82,77 @@ module OmniAuth
85
82
  # https://virkailija.opintopolku.fi/koodisto-service/rest/codeelement/oppilaitosnumero_04647
86
83
  # for school code 04647.
87
84
  # (multi value)
88
- {
89
- name: 'urn:mpass.id:schoolCode',
90
- name_format: 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri',
91
- friendly_name: 'mpassSchoolCode'
92
- },
93
- # The human-readable name of the school of the authenticated user.
94
- # (multi value)
95
- {
96
- name: 'urn:mpass.id:school',
97
- name_format: 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri',
98
- friendly_name: 'school'
99
- },
100
- # Combination of the school code and official name of the educational
101
- # institution separated with semicolon.
102
- # For instance: 00000;Tuntematon
85
+ #
86
+ # The OIDs for educational institution (`OPPILAITOS`) can be found from:
87
+ # https://virkailija.opintopolku.fi/organisaatio-service/swagger-ui/index.html
103
88
  {
104
89
  name: 'urn:mpass.id:schoolInfo',
105
90
  name_format: 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri',
106
91
  friendly_name: 'mpassSchoolInfo'
107
92
  },
108
- # The class/group-information of the authenticated user.
109
- # For instance: 8A or 3B.
110
- # (multi value)
111
- {
112
- name: 'urn:mpass.id:class',
113
- name_format: 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri',
114
- friendly_name: 'mpassClass'
115
- },
116
- {
117
- name: 'urn:educloudalliance.org:group',
118
- name_format: 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri',
119
- friendly_name: 'ecaGroup'
120
- },
121
93
  # The class/level-information of the authenticated user.
122
94
  # For instance 8 or 3.
123
- # (multi value)
95
+ # (single value)
124
96
  {
125
97
  name: 'urn:mpass.id:classLevel',
126
98
  name_format: 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri',
127
99
  friendly_name: 'mpassClassLevel'
128
100
  },
129
- # The role name of the user.
130
- # For instance Oppilas.
101
+ # The learning material charge.
102
+ # For instance 0;00000 AND 0;1.2.246.562.99.00000000003.
131
103
  # (multi value)
132
104
  {
133
- name: 'urn:educloudalliance.org:role',
105
+ name: 'urn:mpass.id:learningMaterialsCharge',
134
106
  name_format: 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri',
135
- friendly_name: 'ecaRole'
107
+ friendly_name: 'mpassLearningMaterialsCharge'
136
108
  },
137
109
  # The role of the user in four parts, divided with a semicolon (;)
138
110
  # character. First educational provider's organization OID, followed by
139
- # school code, group and role in the group.
140
- # For instance 1.2.246.562.10.12345678907;99900;7B;Oppilas.
111
+ # school code, group (e.g. the class), role in the group (e.g.
112
+ # "Oppilas"), the role code (e.g. "1"), the educational institution's
113
+ # OID and finally the office OID (can be undefined).
114
+ # For instance 1.2.246.562.99.00000000001;00000;1A;Oppilas;1;1.2.246.562.99.00000000003;
141
115
  # (multi value)
142
116
  #
143
- # The educational providers' organization OIDs can be found from:
144
- # https://github.com/Opetushallitus/aitu/blob/master/ttk-db/resources/db/migration/V11_2__koulutustoimijat.sql
117
+ # The OIDs for educational providers (`KOULUTUSTOIMIJA`), educational
118
+ # institutions (`OPPILAITOS`) and offices/branches (`TOIMIPISTE`) can be
119
+ # found from:
120
+ # https://virkailija.opintopolku.fi/organisaatio-service/swagger-ui/index.html
121
+ #
122
+ # The test entries are in:
123
+ # https://github.com/Opetushallitus/aitu/blob/master/ttk-db/resources/db/migration/V12_0__oppilaitosten_puuttuvat_koulutustoimijat.sql
145
124
  {
146
125
  name: 'urn:mpass.id:role',
147
126
  name_format: 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri',
148
127
  friendly_name: 'mpassRole'
149
128
  },
150
- # The educational provider's permanent organization OID.
151
- # (multi value)
152
- #
153
- # The educational providers' organization OIDs can be found from:
154
- # https://github.com/Opetushallitus/aitu/blob/master/ttk-db/resources/db/migration/V11_2__koulutustoimijat.sql
155
- {
156
- name: 'urn:mpass.id:educationProviderId',
157
- name_format: 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri',
158
- friendly_name: 'mpassEducationProviderOid'
159
- },
160
- # The educational provider's human-readable name.
161
- # (multi value)
129
+ # Funet EDU person learner ID
130
+ # (single value)
162
131
  {
163
- name: 'urn:mpass.id:educationProvider',
132
+ name: 'urn:oid:1.3.6.1.4.1.16161.1.1.27',
164
133
  name_format: 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri',
165
- friendly_name: 'mpassEducationProviderName'
134
+ friendly_name: 'learnerId'
166
135
  },
167
136
  # Combination of the education provider's organisation-OID and official
168
137
  # name. Separated by semicolon.
169
138
  # For instance: 1.2.246.562.10.494695390410;Virallinen nimi
170
139
  # (multi value)
140
+ #
141
+ # The OIDs for educational providers (`KOULUTUSTOIMIJA`) can be found
142
+ # from:
143
+ # https://virkailija.opintopolku.fi/organisaatio-service/swagger-ui/index.html
171
144
  {
172
145
  name: 'urn:mpass.id:educationProviderInfo',
173
146
  name_format: 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri',
174
147
  friendly_name: 'mpassEducationProviderInfo'
148
+ },
149
+ # The relaying organization for the information.
150
+ # For instance: 1.2.246.562.10.00000000000
151
+ # (single value)
152
+ {
153
+ name: 'urn:mpass.id:originalIssuer',
154
+ name_format: 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri',
155
+ friendly_name: 'originalIssuer'
175
156
  }
176
157
  ]
177
158
 
@@ -179,31 +160,35 @@ module OmniAuth
179
160
  # https://github.com/omniauth/omniauth/wiki/Auth-Hash-Schema#schema-10-and-later
180
161
  option(
181
162
  :attribute_statements,
182
- # Given name or all first names (in case given name is not found)
183
- first_name: ['urn:oid:2.5.4.42', 'http://eidas.europa.eu/attributes/naturalperson/CurrentGivenName'],
184
- last_name: ['urn:oid:2.5.4.4'],
185
- # The education provider (e.g. municipality) of the person (literal format in Finnish)
186
- location: ['urn:mpass.id:educationProvider']
163
+ # First name/calling name or given name (in case first name/calling name is not found)
164
+ first_name: ['urn:mpass.id:nickname', 'urn:oid:2.5.4.42'],
165
+ last_name: ['urn:oid:2.5.4.4']
187
166
  )
188
167
 
189
168
  info do
190
169
  # Generate the full name to the info hash
191
170
  first_name = find_attribute_by(
192
171
  [
193
- 'urn:oid:2.5.4.42',
194
- 'http://eidas.europa.eu/attributes/naturalperson/CurrentGivenName'
172
+ 'urn:mpass.id:nickname',
173
+ 'urn:oid:2.5.4.42'
195
174
  ]
196
175
  )
197
176
  last_name = find_attribute_by(['urn:oid:2.5.4.4'])
198
177
  display_name = "#{first_name} #{last_name}".strip
199
- display_name = nil if display_name.length.zero?
178
+ display_name = nil if display_name.length.zero? # rubocop:disable Style/ZeroLengthPredicate
200
179
 
201
180
  found_attributes = [[:name, display_name]]
202
181
 
182
+ provider = find_attribute_by(['urn:mpass.id:educationProviderInfo'])
183
+ if provider
184
+ provider_parts = provider.split(';')
185
+ found_attributes << [:location, provider_parts[1]] if provider_parts[1]
186
+ end
187
+
203
188
  # Default functionality from omniauth-saml
204
189
  found_attributes += options.attribute_statements.map do |key, values|
205
190
  attribute = find_attribute_by(values)
206
- [key, attribute]
191
+ [key.to_sym, attribute]
207
192
  end
208
193
 
209
194
  found_attributes.to_h
@@ -222,43 +207,27 @@ module OmniAuth
222
207
  option(
223
208
  :saml_attributes_map,
224
209
  given_name: ['urn:oid:2.5.4.42'],
225
- first_names: ['urn:oid:2.5.4.42'],
210
+ first_name: ['urn:mpass.id:nickname'],
226
211
  last_name: ['urn:oid:2.5.4.4'],
227
- provider_id: {
228
- name: ['urn:mpass.id:educationProviderId'],
212
+ provider_info: {
213
+ name: ['urn:mpass.id:educationProviderInfo'],
229
214
  type: :multi
230
215
  },
231
- provider_name: {
232
- name: ['urn:mpass.id:educationProvider'],
216
+ school_info: {
217
+ name: ['urn:mpass.id:schoolInfo'],
233
218
  type: :multi
234
219
  },
235
- school_code: {
236
- name: ['urn:mpass.id:schoolCode'],
237
- type: :multi
238
- },
239
- school_name: {
240
- name: ['urn:mpass.id:school'],
241
- type: :multi
242
- },
243
- class: {
244
- name: ['urn:mpass.id:class', 'urn:educloudalliance.org:group'],
245
- type: :multi
246
- },
247
- class_level: {
248
- name: ['urn:mpass.id:classLevel'],
220
+ class_level: ['urn:mpass.id:classLevel'],
221
+ learning_materials_charge: {
222
+ name: ['urn:mpass.id:learningMaterialsCharge'],
249
223
  type: :multi
250
224
  },
251
225
  role: {
252
- name: ['urn:mpass.id:role', 'urn:educloudalliance.org:structuredRole'],
253
- type: :multi
254
- },
255
- role_name: {
256
- name: ['urn:educloudalliance.org:role'],
226
+ name: ['urn:mpass.id:role'],
257
227
  type: :multi
258
228
  },
259
- # Extra
260
- # Unique learner ID
261
- funet_person_learner_id: ['urn:oid:1.3.6.1.4.1.16161.1.1.27']
229
+ learner_id: ['urn:oid:1.3.6.1.4.1.16161.1.1.27'],
230
+ original_issuer: ['urn:mpass.id:originalIssuer']
262
231
  )
263
232
 
264
233
  # Defines the SAML attribute from which to determine the OmniAuth `uid`.
@@ -297,6 +266,8 @@ module OmniAuth
297
266
  authn_request = OneLogin::RubySaml::Authrequest.new
298
267
  lang = lang_for_authn_request
299
268
 
269
+ session['saml_redirect_url'] = request.params['redirect_url']
270
+
300
271
  with_settings do |settings|
301
272
  url = authn_request.create(settings, additional_params_for_authn_request)
302
273
  url += "&lang=#{CGI.escape(lang)}" unless lang.nil?
@@ -2,6 +2,6 @@
2
2
 
3
3
  module OmniAuth
4
4
  module MPASSid
5
- VERSION = '0.5.1'
5
+ VERSION = '0.6.1'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-mpassid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Antti Hukkanen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-01 00:00:00.000000000 Z
11
+ date: 2024-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: omniauth-saml
@@ -150,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
150
  - !ruby/object:Gem::Version
151
151
  version: '0'
152
152
  requirements: []
153
- rubygems_version: 3.0.3
153
+ rubygems_version: 3.2.33
154
154
  signing_key:
155
155
  specification_version: 4
156
156
  summary: Provides an MPASSid strategy for OmniAuth.