mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-10-22 08:19:04 +00:00
* [Update] core支持openid登录,coco还不支持 * [Update] coco支持openid登录 * [Update] 修改注释 * [Update] 修改 OpenID Auth Code Backend 用户认证失败返回None, 不是Anonymoususer * [Update] 修改OpenID Code用户认证异常捕获 * [Update] 修改OpenID Auth Middleware, check用户是否单点退出的异常捕获 * [Update] 修改config_example Auth OpenID 配置 * [Update] 登录页面添加 更多登录方式 * [Update] 重构OpenID认证架构 * [Update] 修改小细节 * [Update] OpenID用户认证成功后,更新用户来源 * [update] 添加OpenID用户登录成功日志
43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
# coding:utf-8
|
|
#
|
|
|
|
from django.conf import settings
|
|
from django.contrib.auth import logout
|
|
from django.utils.deprecation import MiddlewareMixin
|
|
from django.contrib.auth import BACKEND_SESSION_KEY
|
|
|
|
from . import client
|
|
from common.utils import get_logger
|
|
from .backends import BACKEND_OPENID_AUTH_CODE
|
|
from authentication.openid.models import OIDT_ACCESS_TOKEN
|
|
|
|
logger = get_logger(__file__)
|
|
|
|
|
|
class OpenIDAuthenticationMiddleware(MiddlewareMixin):
|
|
"""
|
|
Check openid user single logout (with access_token)
|
|
"""
|
|
|
|
def process_request(self, request):
|
|
|
|
# Don't need openid auth if AUTH_OPENID is False
|
|
if not settings.AUTH_OPENID:
|
|
return
|
|
|
|
# Don't need check single logout if user not authenticated
|
|
if not request.user.is_authenticated:
|
|
return
|
|
|
|
elif request.session[BACKEND_SESSION_KEY] != BACKEND_OPENID_AUTH_CODE:
|
|
return
|
|
|
|
# Check openid user single logout or not with access_token
|
|
try:
|
|
client.openid_connect_client.userinfo(
|
|
token=request.session.get(OIDT_ACCESS_TOKEN))
|
|
|
|
except Exception as e:
|
|
logout(request)
|
|
logger.error(e)
|