0%

单点登陆方案

场景

  • CAS
    • 多个应用共用一个登陆设置.
    • 我现在做的前后端分离的,不用关注权限问题,最后部署时候统一设置单点登陆就可以
  • 手机端不适合基于session的场景,看了jwt方案.
    • 现在好像auth2.0的方案也挺流行,之前工作中主要是用这个实现客户权限控制,最近感觉主要是感觉想微博登陆账号这种不用直接提过密码就可以授权的方案中.

注意以下实现主要是基于python django drf.

CAS方案

单点登陆服务端:server django-mama-cas
客户端:django-cas-ng
测试
  • 如果不加CAS_ADMIN_PREFIX,登陆/admin/会跳转,加上就/auth/test/ 这个测试

非session方案

sso rest风格
  • django-rest-auth demo 也是在rest-framework-tutorial ,然后放在了gitte上面.
  • 测试
    官方代码自己集成了swagger测试

REST framework JWT Auth

  • 测试
    参考官网
  • JWT 配置
    比如 JWT_RESPONSE_PAYLOAD_HANDLER 可以重写然后配置
    # urls.py
    from rest_framework_jwt.views import obtain_jwt_token
    urlpatterns = [
    url(r'^authorizations/>, obtain_jwt_token),
    ]
    # utils.py
    def jwt_response_payload_handler(token, user=None, request=None):
    """
    自定义jwt认证成功返回数据
    """
    return {
    'token': token,
    'user_id': user.id,
    'username': user.username
    }
    # 修改配置 # JWT
    JWT_AUTH = {
    'JWT_EXPIRATION_DELTA': datetime.timedelta(days=1),    'JWT_RESPONSE_PAYLOAD_HANDLER':'users.utils.jwt_response_payload_handler',
    }

参考