providers/oauth2: accept token as post param
This commit is contained in:
@ -6,18 +6,39 @@ from django.db import migrations, models
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('passbook_providers_oauth2', '0002_oauth2provider_sub_mode'),
|
||||
("passbook_providers_oauth2", "0002_oauth2provider_sub_mode"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='oauth2provider',
|
||||
name='client_type',
|
||||
field=models.CharField(choices=[('confidential', 'Confidential'), ('public', 'Public')], default='confidential', help_text='Confidential clients are capable of maintaining the confidentiality\n of their credentials. Public clients are incapable.', max_length=30, verbose_name='Client Type'),
|
||||
model_name="oauth2provider",
|
||||
name="client_type",
|
||||
field=models.CharField(
|
||||
choices=[("confidential", "Confidential"), ("public", "Public")],
|
||||
default="confidential",
|
||||
help_text="Confidential clients are capable of maintaining the confidentiality\n of their credentials. Public clients are incapable.",
|
||||
max_length=30,
|
||||
verbose_name="Client Type",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='oauth2provider',
|
||||
name='response_type',
|
||||
field=models.TextField(choices=[('code', 'code (Authorization Code Flow)'), ('code_adfs', 'code (ADFS Compatibility Mode, sends id_token as access_token)'), ('id_token', 'id_token (Implicit Flow)'), ('id_token token', 'id_token token (Implicit Flow)'), ('code token', 'code token (Hybrid Flow)'), ('code id_token', 'code id_token (Hybrid Flow)'), ('code id_token token', 'code id_token token (Hybrid Flow)')], default='code', help_text='Response Type required by the client.'),
|
||||
model_name="oauth2provider",
|
||||
name="response_type",
|
||||
field=models.TextField(
|
||||
choices=[
|
||||
("code", "code (Authorization Code Flow)"),
|
||||
(
|
||||
"code_adfs",
|
||||
"code (ADFS Compatibility Mode, sends id_token as access_token)",
|
||||
),
|
||||
("id_token", "id_token (Implicit Flow)"),
|
||||
("id_token token", "id_token token (Implicit Flow)"),
|
||||
("code token", "code token (Hybrid Flow)"),
|
||||
("code id_token", "code id_token (Hybrid Flow)"),
|
||||
("code id_token token", "code id_token token (Hybrid Flow)"),
|
||||
],
|
||||
default="code",
|
||||
help_text="Response Type required by the client.",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
||||
@ -70,7 +70,10 @@ class ResponseTypes(models.TextChoices):
|
||||
"""Response Type required by the client."""
|
||||
|
||||
CODE = "code", _("code (Authorization Code Flow)")
|
||||
CODE_ADFS = "code_adfs", _("code (ADFS Compatibility Mode, sends id_token as access_token)")
|
||||
CODE_ADFS = (
|
||||
"code_adfs",
|
||||
_("code (ADFS Compatibility Mode, sends id_token as access_token)"),
|
||||
)
|
||||
ID_TOKEN = "id_token", _("id_token (Implicit Flow)")
|
||||
ID_TOKEN_TOKEN = "id_token token", _("id_token token (Implicit Flow)")
|
||||
CODE_TOKEN = "code token", _("code token (Hybrid Flow)")
|
||||
|
||||
@ -61,11 +61,12 @@ def extract_access_token(request: HttpRequest) -> str:
|
||||
auth_header = request.META.get("HTTP_AUTHORIZATION", "")
|
||||
|
||||
if re.compile(r"^[Bb]earer\s{1}.+$").match(auth_header):
|
||||
access_token = auth_header.split()[1]
|
||||
else:
|
||||
access_token = request.GET.get("access_token", "")
|
||||
|
||||
return access_token
|
||||
return auth_header.split()[1]
|
||||
if "access_token" in request.POST:
|
||||
return request.POST.get("access_token")
|
||||
if "access_token" in request.GET:
|
||||
return request.GET.get("access_token")
|
||||
return ""
|
||||
|
||||
|
||||
def extract_client_auth(request: HttpRequest) -> Tuple[str, str]:
|
||||
|
||||
@ -17,7 +17,8 @@ from passbook.providers.oauth2.errors import TokenError, UserAuthError
|
||||
from passbook.providers.oauth2.models import (
|
||||
AuthorizationCode,
|
||||
OAuth2Provider,
|
||||
RefreshToken, ResponseTypes,
|
||||
RefreshToken,
|
||||
ResponseTypes,
|
||||
)
|
||||
from passbook.providers.oauth2.utils import TokenResponse, extract_client_auth
|
||||
|
||||
|
||||
Reference in New Issue
Block a user