diff --git a/apps/jumpserver/conf.py b/apps/jumpserver/conf.py index 60d665a04..718f8fe7e 100644 --- a/apps/jumpserver/conf.py +++ b/apps/jumpserver/conf.py @@ -333,9 +333,9 @@ class Config(dict): 'CAS_ROOT_PROXIED_AS': 'https://example.com', 'CAS_LOGOUT_COMPLETELY': True, 'CAS_VERSION': 3, - 'CAS_USERNAME_ATTRIBUTE': 'uid', + 'CAS_USERNAME_ATTRIBUTE': 'cas:user', 'CAS_APPLY_ATTRIBUTES_TO_USER': False, - 'CAS_RENAME_ATTRIBUTES': {'uid': 'username'}, + 'CAS_RENAME_ATTRIBUTES': {'cas:user': 'username'}, 'CAS_CREATE_USER': True, 'AUTH_SSO': False, diff --git a/apps/settings/migrations/0009_alter_cas_username_attribute.py b/apps/settings/migrations/0009_alter_cas_username_attribute.py new file mode 100644 index 000000000..562da4950 --- /dev/null +++ b/apps/settings/migrations/0009_alter_cas_username_attribute.py @@ -0,0 +1,32 @@ +# Generated by Django 3.2.19 on 2023-06-30 10:37 +import json + +from django.db import migrations + + +def migrate_cas_setting(apps, schema_editor): + setting_model = apps.get_model('settings', 'Setting') + obj = setting_model.objects.filter(name='CAS_RENAME_ATTRIBUTES').first() + if obj: + try: + value = json.loads(obj.value) + except Exception: + print("Invalid telnet regex setting, skip") + return + + if value.pop('uid', None): + setting_model.objects.filter(name='CAS_USERNAME_ATTRIBUTE').update(value='"cas:user"') + value['cas:user'] = 'username' + obj.value = json.dumps(value) + obj.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ('settings', '0008_alter_setting_options'), + ] + + operations = [ + migrations.RunPython(migrate_cas_setting), + ]