Skip to content

Commit

Permalink
[combo.__init__] RPHandler does not have the get_metadata method
Browse files Browse the repository at this point in the history
[view.py] Added index file
  • Loading branch information
rohe committed Dec 11, 2024
1 parent bdffa7c commit 8278eeb
Show file tree
Hide file tree
Showing 6 changed files with 25 additions and 6 deletions.
4 changes: 2 additions & 2 deletions edu_federation/relying_party_explicit/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,8 @@ def wkof():
# Any client will do
cli = _rph.issuer2rp[list(_rph.issuer2rp.keys())[0]]

_metadata = current_app.server.get_metadata()
_metadata.update(cli.get_metadata())
_metadata = current_app.server.get_metadata(cli)
#_metadata.update(cli.get_metadata())

_fed_entity = current_app.server["federation_entity"]

Expand Down
8 changes: 8 additions & 0 deletions edu_federation/trust_anchor/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from flask import Blueprint
from flask import current_app
from flask import redirect
from flask import render_template
from flask import request
from flask.helpers import make_response
from flask.helpers import send_from_directory
Expand Down Expand Up @@ -133,6 +134,13 @@ def service_endpoint(endpoint):
return response


@entity.route('/')
def index():
_entity = current_app.federation_entity
_keys = _entity.server.subordinate.keys()
display = {k:_entity.server.subordinate[k] for k in _keys}
return render_template('trust_anchor.html', subordinates=display)

@entity.route('/static/<path:path>')
def send_js(path):
return send_from_directory('static', path)
Expand Down
2 changes: 1 addition & 1 deletion src/fedservice/appclient/oauth2/registration.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ def create_entity_statement(self, request_args: Optional[dict] = None, **kwargs)

_federation_entity = get_federation_entity(self)
_combo = _federation_entity.upstream_get('unit')
metadata = _combo.get_metadata()
metadata = _combo.get_metadata(client=kwargs.get("client"))

_keyjar = _federation_entity.get_attribute("keyjar")
_authority_hints = _federation_entity.get_authority_hints()
Expand Down
1 change: 1 addition & 0 deletions src/fedservice/appclient/oidc/registration.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ class Registration(registration.Registration):
endpoint_name = 'federation_registration_endpoint'
request_body_type = 'jwt'
response_body_type = 'jwt'
content_type = "application/entity-statement+jwt"
name = 'registration'

def __init__(self, upstream_get, conf=None, client_authn_factory=None, **kwargs):
Expand Down
7 changes: 6 additions & 1 deletion src/fedservice/appserver/oidc/registration.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,12 @@ def process_request(self, request=None, **kwargs):
:return:
"""
payload = verify_self_signed_signature(request)
opponent_entity_type = set(payload['metadata'].keys()).difference({'federation_entity'}).pop()
_entity_types = set(payload['metadata'].keys())
if len(_entity_types) == 1:
opponent_entity_type = _entity_types.pop()
else:
opponent_entity_type = _entity_types.difference({'federation_entity'}).pop()

_federation_entity = get_federation_entity(self)

# Collect trust chains for client
Expand Down
9 changes: 7 additions & 2 deletions src/fedservice/combo/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

from cryptojwt import KeyJar
from idpyoidc.client.entity_metadata import EntityMetadata
from idpyoidc.client.rp_handler import RPHandler
from idpyoidc.configure import Configuration
from idpyoidc.message import Message
from idpyoidc.node import Unit
Expand Down Expand Up @@ -106,10 +107,14 @@ def _get_httpc_params(self, config):
return _hp
return config["federation_entity"].get("httpc_params")

def get_metadata(self):
def get_metadata(self, client = None):
res = {}
for federation_type, item in self._part.items():
if getattr(item, "get_metadata", None):
if isinstance(item, RPHandler): # Special treatment
if client:
_res = client.get_metadata()
res.update(_res)
elif getattr(item, "get_metadata", None):
res.update(item.get_metadata(entity_type=federation_type))
return res

Expand Down

0 comments on commit 8278eeb

Please sign in to comment.