diff --git a/core/src/views/authentication/AuthLogin.vue b/core/src/views/authentication/AuthLogin.vue
index 32acf39..230ca9e 100644
--- a/core/src/views/authentication/AuthLogin.vue
+++ b/core/src/views/authentication/AuthLogin.vue
@@ -311,7 +311,16 @@ function backToIdentity() {
}
function getMethodIcon(method: AuthenticationMethod): string {
- if (method.icon) return method.icon;
+ if (method.icon?.startsWith('mdi-') || method.icon?.startsWith('$')) {
+ return method.icon;
+ }
+
+ // Authentication providers may return a bare Material Design icon name
+ // (for example, "lock" or "mail") instead of Vuetify's "mdi-*" form.
+ if (method.icon && /^[a-z0-9-]+$/i.test(method.icon)) {
+ return `mdi-${method.icon}`;
+ }
+
switch (method.method) {
case 'credential': return 'mdi-key';
case 'challenge': return 'mdi-shield-check';
@@ -388,7 +397,7 @@ function getMethodIcon(method: AuthenticationMethod): string {
size="large"
@click="initiateSsoLogin(method.id)"
>
- {{ method.icon }}
+ {{ getMethodIcon(method) }}
{{ method.label }}