|
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 | + |
| 130 | +# Handle some basic settings |
| 131 | + |
| 132 | +## String settings |
| 133 | +STRING_SETTINGS = ( |
| 134 | + "FIWARE_IDM_SERVER", |
| 135 | + "FIWARE_IDM_PUBLIC_URL", |
| 136 | + "SOCIAL_AUTH_FIWARE_KEY", |
| 137 | + "SOCIAL_AUTH_FIWARE_SECRET", |
| 138 | + "KEYCLOAK_SERVER", |
| 139 | + "KEYCLOAK_REALM", |
| 140 | + "KEYCLOAK_KEY", |
| 141 | + "SOCIAL_AUTH_KEYCLOAK_KEY", |
| 142 | + "SOCIAL_AUTH_KEYCLOAK_SECRET", |
| 143 | +) |
| 144 | +for setting in STRING_SETTINGS: |
| 145 | + value = os.environ.get(setting, "").strip() |
| 146 | + if value != "": |
| 147 | + locals()[setting] = value |
| 148 | + |
| 149 | +## Boolean settings |
| 150 | +BOOLEAN_SETTINGS = ( |
| 151 | + "KEYCLOAK_GLOBAL_ROLE", |
| 152 | +) |
| 153 | +for setting in BOOLEAN_SETTINGS: |
| 154 | + value = os.environ.get(setting, "").strip() |
| 155 | + if value != "": |
| 156 | + locals()[setting] = value.lower() == "true" |
| 157 | + |
| 158 | + |
| 159 | +# FIWARE & Keycloak configuration |
| 160 | +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 |
| 161 | +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 |
| 162 | + |
| 163 | +if IDM_AUTH == 'fiware': |
137 | 164 | INSTALLED_APPS += ( |
138 | 165 | 'wirecloud.fiware', |
139 | 166 | 'social_django', |
140 | 167 | 'haystack', |
141 | 168 | ) |
| 169 | +elif IDM_AUTH == 'keycloak': |
| 170 | + INSTALLED_APPS += ( |
| 171 | + 'wirecloud.fiware', |
| 172 | + 'wirecloud.keycloak', |
| 173 | + 'social_django', |
| 174 | + 'haystack', |
| 175 | + ) |
142 | 176 | else: |
143 | 177 | INSTALLED_APPS += ( |
144 | 178 | 'wirecloud.oauth2provider', |
|
192 | 226 | USE_X_FORWARDED_PORT = True |
193 | 227 |
|
194 | 228 | # Auth configuration |
195 | | -if IDM_AUTH_ENABLED: |
| 229 | +if IDM_AUTH == 'fiware': |
196 | 230 | AUTHENTICATION_BACKENDS = ( |
197 | 231 | 'wirecloud.fiware.social_auth_backend.FIWAREOAuth2', |
198 | 232 | ) |
| 233 | +elif IDM_AUTH == 'keycloak': |
| 234 | + AUTHENTICATION_BACKENDS = ( |
| 235 | + 'wirecloud.keycloak.social_auth_backend.KeycloakOAuth2', |
| 236 | + ) |
199 | 237 | else: |
200 | 238 | AUTHENTICATION_BACKENDS = ( |
201 | 239 | 'django.contrib.auth.backends.ModelBackend', |
|
0 commit comments