mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-05-15 17:17:02 +02:00
Add biometric
This commit is contained in:
parent
5bfd6c867f
commit
28e18e705b
3 changed files with 22 additions and 8 deletions
|
@ -14,6 +14,7 @@ from oic.oic import AuthorizationRequest, AuthorizationResponse, RegistrationRes
|
||||||
from oic.oic.message import AccessTokenResponse
|
from oic.oic.message import AccessTokenResponse
|
||||||
from oic.utils.authn.client import CLIENT_AUTHN_METHOD
|
from oic.utils.authn.client import CLIENT_AUTHN_METHOD
|
||||||
from oic.utils import keyio
|
from oic.utils import keyio
|
||||||
|
from urllib.parse import urlparse, urlunparse, urlencode, parse_qs
|
||||||
|
|
||||||
from . import exceptions as o_e
|
from . import exceptions as o_e
|
||||||
|
|
||||||
|
@ -84,6 +85,7 @@ class Client(oic.Client):
|
||||||
def create_authn_request(
|
def create_authn_request(
|
||||||
self,
|
self,
|
||||||
session,
|
session,
|
||||||
|
add_acr=True,
|
||||||
extra_args=None,
|
extra_args=None,
|
||||||
):
|
):
|
||||||
"""Step 2: Construct a login URL at OP's domain and send the user to it."""
|
"""Step 2: Construct a login URL at OP's domain and send the user to it."""
|
||||||
|
@ -100,10 +102,10 @@ class Client(oic.Client):
|
||||||
"state": session["state"],
|
"state": session["state"],
|
||||||
"nonce": session["nonce"],
|
"nonce": session["nonce"],
|
||||||
"redirect_uri": self.registration_response["redirect_uris"][0],
|
"redirect_uri": self.registration_response["redirect_uris"][0],
|
||||||
# acr_value may be passed in session if overriding, as in the case
|
|
||||||
# of step up auth, otherwise get from settings.py
|
|
||||||
"acr_values": session.get("acr_value") or self.behaviour.get("acr_value"),
|
|
||||||
}
|
}
|
||||||
|
if add_acr:
|
||||||
|
request_args["acr_values"] = session.get("acr_value") or self.behaviour.get("acr_value")
|
||||||
|
request_args["vtr"] = json.dumps(self.behaviour.get("vtr"))
|
||||||
|
|
||||||
if extra_args is not None:
|
if extra_args is not None:
|
||||||
request_args.update(extra_args)
|
request_args.update(extra_args)
|
||||||
|
@ -126,6 +128,7 @@ class Client(oic.Client):
|
||||||
method="GET",
|
method="GET",
|
||||||
request_args=request_args,
|
request_args=request_args,
|
||||||
)
|
)
|
||||||
|
|
||||||
logger.debug("body: %s" % body)
|
logger.debug("body: %s" % body)
|
||||||
logger.debug("URL: %s" % url)
|
logger.debug("URL: %s" % url)
|
||||||
logger.debug("headers: %s" % headers)
|
logger.debug("headers: %s" % headers)
|
||||||
|
@ -141,6 +144,7 @@ class Client(oic.Client):
|
||||||
if headers:
|
if headers:
|
||||||
for key, value in headers.items():
|
for key, value in headers.items():
|
||||||
response[key] = value
|
response[key] = value
|
||||||
|
print(f"create auth => response is {response}")
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
logger.error(err)
|
logger.error(err)
|
||||||
logger.error("Failed to create redirect object for %s" % state)
|
logger.error("Failed to create redirect object for %s" % state)
|
||||||
|
@ -294,6 +298,12 @@ class Client(oic.Client):
|
||||||
this helper function is called from djangooidc views"""
|
this helper function is called from djangooidc views"""
|
||||||
return self.behaviour.get("step_up_acr_value")
|
return self.behaviour.get("step_up_acr_value")
|
||||||
|
|
||||||
|
def get_vtm_value(self):
|
||||||
|
return self.behaviour.get("vtm")
|
||||||
|
|
||||||
|
def get_vtr_value(self):
|
||||||
|
return self.behaviour.get("vtr")
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return "Client {} {} {}".format(
|
return "Client {} {} {}".format(
|
||||||
self.client_id,
|
self.client_id,
|
||||||
|
|
|
@ -96,9 +96,13 @@ def login_callback(request):
|
||||||
if _requires_step_up_auth(userinfo):
|
if _requires_step_up_auth(userinfo):
|
||||||
# add acr_value to request.session
|
# add acr_value to request.session
|
||||||
|
|
||||||
# LOOK HERE this is basically the flag that indicates that we should proceed
|
if "acr_value" in request.session:
|
||||||
request.session["acr_value"] = CLIENT.get_step_up_acr_value()
|
request.session.pop("acr_value")
|
||||||
return CLIENT.create_authn_request(request.session)
|
extra_args = {
|
||||||
|
"vtm": CLIENT.get_vtm_value(),
|
||||||
|
}
|
||||||
|
print(f"session is: {request.session}")
|
||||||
|
return CLIENT.create_authn_request(request.session, add_acr=False, extra_args=extra_args)
|
||||||
user = authenticate(request=request, **userinfo)
|
user = authenticate(request=request, **userinfo)
|
||||||
if user:
|
if user:
|
||||||
|
|
||||||
|
|
|
@ -497,13 +497,13 @@ LOGGING = {
|
||||||
# OpenID Connect logger
|
# OpenID Connect logger
|
||||||
"oic": {
|
"oic": {
|
||||||
"handlers": ["console"],
|
"handlers": ["console"],
|
||||||
"level": "INFO",
|
"level": "DEBUG",
|
||||||
"propagate": False,
|
"propagate": False,
|
||||||
},
|
},
|
||||||
# Django wrapper for OpenID Connect
|
# Django wrapper for OpenID Connect
|
||||||
"djangooidc": {
|
"djangooidc": {
|
||||||
"handlers": ["console"],
|
"handlers": ["console"],
|
||||||
"level": "INFO",
|
"level": "DEBUG",
|
||||||
"propagate": False,
|
"propagate": False,
|
||||||
},
|
},
|
||||||
# Our app!
|
# Our app!
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue