|
126 | 126 | # Python dotted path to the WSGI application used by Django's runserver. |
127 | 127 | WSGI_APPLICATION = 'wirecloud_instance.wsgi.application' |
128 | 128 |
|
129 | | -# FIWARE IdM configuration |
130 | | -FIWARE_IDM_SERVER = os.environ.get('FIWARE_IDM_SERVER', '').strip() |
131 | | -FIWARE_IDM_PUBLIC_URL = os.environ.get('FIWARE_IDM_PUBLIC_URL', FIWARE_IDM_SERVER).strip() |
132 | | -SOCIAL_AUTH_FIWARE_KEY = os.environ.get('SOCIAL_AUTH_FIWARE_KEY', '').strip() |
133 | | -SOCIAL_AUTH_FIWARE_SECRET = os.environ.get('SOCIAL_AUTH_FIWARE_SECRET', '').strip() |
134 | | -IDM_AUTH_ENABLED = FIWARE_IDM_SERVER and SOCIAL_AUTH_FIWARE_KEY and SOCIAL_AUTH_FIWARE_SECRET |
135 | | - |
136 | | -if IDM_AUTH_ENABLED: |
| 129 | +# Handle some basic settings |
| 130 | + |
| 131 | +## String settings |
| 132 | +STRING_SETTINGS = ( |
| 133 | + "FIWARE_IDM_SERVER", |
| 134 | + "FIWARE_IDM_PUBLIC_URL", |
| 135 | + "SOCIAL_AUTH_FIWARE_KEY", |
| 136 | + "SOCIAL_AUTH_FIWARE_SECRET", |
| 137 | + "KEYCLOAK_SERVER", |
| 138 | + "KEYCLOAK_REALM", |
| 139 | + "KEYCLOAK_KEY", |
| 140 | + "SOCIAL_AUTH_KEYCLOAK_KEY", |
| 141 | + "SOCIAL_AUTH_KEYCLOAK_SECRET", |
| 142 | +) |
| 143 | +for setting in STRING_SETTINGS: |
| 144 | + value = os.environ.get(setting, "").strip() |
| 145 | + if value != "": |
| 146 | + locals()[setting] = value |
| 147 | + |
| 148 | +## Boolean settings |
| 149 | +BOOLEAN_SETTINGS = ( |
| 150 | + "KEYCLOAK_GLOBAL_ROLE", |
| 151 | +) |
| 152 | +for setting in BOOLEAN_SETTINGS: |
| 153 | + value = os.environ.get(setting, "").strip() |
| 154 | + if value != "": |
| 155 | + locals()[setting] = value.lower() == "true" |
| 156 | + |
| 157 | + |
| 158 | +# FIWARE & Keycloak configuration |
| 159 | +IDM_AUTH = 'fiware' if "FIWARE_IDM_SERVER" in locals() and "SOCIAL_AUTH_FIWARE_KEY" in locals() and "SOCIAL_AUTH_FIWARE_SECRET" in locals() else None |
| 160 | +IDM_AUTH = 'keycloak' if "KEYCLOAK_IDM_SERVER" in locals() and "KEYCLOAK_REALM" in locals() and "KEYCLOAK_KEY" in locals() and "SOCIAL_AUTH_KEYCLOAK_KEY" in locals() and "SOCIAL_AUTH_KEYCLOAK_SECRET" in locals() else IDM_AUTH |
| 161 | + |
| 162 | +if IDM_AUTH == 'fiware': |
| 163 | + INSTALLED_APPS += ( |
| 164 | + 'wirecloud.fiware', |
| 165 | + 'social_django', |
| 166 | + 'haystack', |
| 167 | + ) |
| 168 | +elif IDM_AUTH == 'keycloak': |
137 | 169 | INSTALLED_APPS += ( |
138 | 170 | 'wirecloud.fiware', |
| 171 | + 'wirecloud.keycloak', |
139 | 172 | 'social_django', |
140 | 173 | 'haystack', |
141 | 174 | ) |
|
192 | 225 | USE_X_FORWARDED_PORT = True |
193 | 226 |
|
194 | 227 | # Auth configuration |
195 | | -if IDM_AUTH_ENABLED: |
| 228 | +if IDM_AUTH == 'fiware': |
196 | 229 | AUTHENTICATION_BACKENDS = ( |
197 | 230 | 'wirecloud.fiware.social_auth_backend.FIWAREOAuth2', |
198 | 231 | ) |
| 232 | +elif IDM_AUTH == 'keycloak': |
| 233 | + AUTHENTICATION_BACKENDS = ( |
| 234 | + 'wirecloud.keycloak.social_auth_backend.KeycloakOAuth2', |
| 235 | + ) |
199 | 236 | else: |
200 | 237 | AUTHENTICATION_BACKENDS = ( |
201 | 238 | 'django.contrib.auth.backends.ModelBackend', |
|
0 commit comments