mirror of https://github.com/jumpserver/jumpserver
perf: OAuth2协议获取token支持配置json或者data (#12602)
* perf: OAuth2协议获取token支持配置json或者data * perf: 优化注释 --------- Co-authored-by: jiangweidong <weidong.jiang@fit2cloud.com>pull/12592/head
parent
77569c554b
commit
00256f86df
|
@ -98,16 +98,19 @@ class OAuth2Backend(JMSModelBackend):
|
||||||
access_token_url = '{url}{separator}{query}'.format(
|
access_token_url = '{url}{separator}{query}'.format(
|
||||||
url=settings.AUTH_OAUTH2_ACCESS_TOKEN_ENDPOINT, separator=separator, query=urlencode(query_dict)
|
url=settings.AUTH_OAUTH2_ACCESS_TOKEN_ENDPOINT, separator=separator, query=urlencode(query_dict)
|
||||||
)
|
)
|
||||||
|
# token_method -> get, post(post_data), post_json
|
||||||
token_method = settings.AUTH_OAUTH2_ACCESS_TOKEN_METHOD.lower()
|
token_method = settings.AUTH_OAUTH2_ACCESS_TOKEN_METHOD.lower()
|
||||||
requests_func = getattr(requests, token_method, requests.get)
|
|
||||||
logger.debug(log_prompt.format('Call the access token endpoint[method: %s]' % token_method))
|
logger.debug(log_prompt.format('Call the access token endpoint[method: %s]' % token_method))
|
||||||
headers = {
|
headers = {
|
||||||
'Accept': 'application/json'
|
'Accept': 'application/json'
|
||||||
}
|
}
|
||||||
if token_method == 'post':
|
if token_method.startswith('post'):
|
||||||
access_token_response = requests_func(access_token_url, headers=headers, data=query_dict)
|
body_key = 'json' if token_method.endswith('json') else 'data'
|
||||||
|
access_token_response = requests.post(
|
||||||
|
access_token_url, headers=headers, **{body_key: query_dict}
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
access_token_response = requests_func(access_token_url, headers=headers)
|
access_token_response = requests.get(access_token_url, headers=headers)
|
||||||
try:
|
try:
|
||||||
access_token_response.raise_for_status()
|
access_token_response.raise_for_status()
|
||||||
access_token_response_data = access_token_response.json()
|
access_token_response_data = access_token_response.json()
|
||||||
|
|
|
@ -43,7 +43,7 @@ class OAuth2SettingSerializer(serializers.Serializer):
|
||||||
)
|
)
|
||||||
AUTH_OAUTH2_ACCESS_TOKEN_METHOD = serializers.ChoiceField(
|
AUTH_OAUTH2_ACCESS_TOKEN_METHOD = serializers.ChoiceField(
|
||||||
default='GET', label=_('Client authentication method'),
|
default='GET', label=_('Client authentication method'),
|
||||||
choices=(('GET', 'GET'), ('POST', 'POST'))
|
choices=(('GET', 'GET'), ('POST', 'POST-DATA'), ('POST_JSON', 'POST-JSON'))
|
||||||
)
|
)
|
||||||
AUTH_OAUTH2_PROVIDER_USERINFO_ENDPOINT = serializers.CharField(
|
AUTH_OAUTH2_PROVIDER_USERINFO_ENDPOINT = serializers.CharField(
|
||||||
required=True, max_length=1024, label=_('Provider userinfo endpoint')
|
required=True, max_length=1024, label=_('Provider userinfo endpoint')
|
||||||
|
|
Loading…
Reference in New Issue