Skip to content

Commit b0d745c

Browse files
committed
Merge branch 'fix-feature-extra-scopes'
2 parents d9f8165 + fc8e37c commit b0d745c

File tree

3 files changed

+15
-7
lines changed

3 files changed

+15
-7
lines changed

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
packages=find_packages('src/'),
1616
package_dir={'': 'src'},
1717
install_requires=[
18-
"pyop >= 2.1.0",
18+
"pyop >= 3.0.1",
1919
"pysaml2",
2020
"pycryptodomex",
2121
"requests",

src/satosa/frontends/openid_connect.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ def _create_provider(self, endpoint_baseurl):
5050
response_types_supported = self.config["provider"].get("response_types_supported", ["id_token"])
5151
subject_types_supported = self.config["provider"].get("subject_types_supported", ["pairwise"])
5252
scopes_supported = self.config["provider"].get("scopes_supported", ["openid"])
53+
extra_scopes = self.config["provider"].get("extra_scopes")
5354
capabilities = {
5455
"issuer": self.base_url,
5556
"authorization_endpoint": "{}/{}".format(endpoint_baseurl, AuthorizationEndpoint.url),
@@ -85,7 +86,14 @@ def _create_provider(self, endpoint_baseurl):
8586
else:
8687
cdb = {}
8788
self.user_db = MongoWrapper(db_uri, "satosa", "authz_codes") if db_uri else {}
88-
self.provider = Provider(self.signing_key, capabilities, authz_state, cdb, Userinfo(self.user_db))
89+
self.provider = Provider(
90+
self.signing_key,
91+
capabilities,
92+
authz_state,
93+
cdb,
94+
Userinfo(self.user_db),
95+
extra_scopes=extra_scopes,
96+
)
8997

9098
def _init_authorization_state(self):
9199
sub_hash_salt = self.config.get("sub_hash_salt", rndstr(16))
@@ -125,7 +133,6 @@ def handle_authn_response(self, context, internal_resp, extra_id_token_claims=No
125133
auth_req,
126134
internal_resp.subject_id,
127135
extra_id_token_claims=extra_id_token_claims,
128-
extra_scopes=self.config.get("extra_scopes"),
129136
)
130137

131138
del context.state[self.name]
@@ -360,7 +367,6 @@ def userinfo_endpoint(self, context):
360367
response = self.provider.handle_userinfo_request(
361368
request=urlencode(context.request),
362369
http_headers=headers,
363-
extra_scopes=self.config.get("extra_scopes"),
364370
)
365371
return Response(response.to_json(), content="application/json")
366372
except (BearerTokenError, InvalidAccessToken) as e:

tests/satosa/frontends/test_openid_connect.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -186,19 +186,21 @@ def test_provider_configuration_endpoint(self, context, frontend):
186186
"claims_parameter_supported": True,
187187
"request_parameter_supported": False,
188188
"request_uri_parameter_supported": False,
189-
"scopes_supported": ["openid", "email"],
190189
"claims_supported": ["email"],
191190
"grant_types_supported": ["authorization_code", "implicit"],
192191
"issuer": BASE_URL,
193-
"require_request_uri_registration": True,
192+
"require_request_uri_registration": False,
194193
"token_endpoint_auth_methods_supported": ["client_secret_basic"],
195194
"version": "3.0"
196195
}
197196

198197
http_response = frontend.provider_config(context)
199198
provider_config = ProviderConfigurationResponse().deserialize(http_response.message, "json")
200199

201-
assert provider_config.to_dict() == expected_capabilities
200+
provider_config_dict = provider_config.to_dict()
201+
scopes_supported = provider_config_dict.pop("scopes_supported")
202+
assert all(scope in scopes_supported for scope in ["openid", "email"])
203+
assert provider_config_dict == expected_capabilities
202204

203205
def test_jwks(self, context, frontend):
204206
http_response = frontend.jwks(context)

0 commit comments

Comments
 (0)