Веб-приложения Azure + Active Directory B2C. Операция выхода из системы держит меня все еще в системе
Я реализовал очень простойRazor Webassembly
применение и используетсяAzure Active Directory B2C
как источник правды для аутентификации и авторизации пользователя.
Когда я набираю URL-адрес StaticWebApp в своем браузере, я перенаправляюсь на страницу входа, как и ожидалось, и здесь я ввожу свое имя пользователя и пароль. После успешного входа в систему отображается индексная страница моего приложения, и я вижу свою электронную почту как зарегистрированный пользователь. Пока все хорошо. Но затем, когда я нажимаю кнопку «Выход», я перенаправляюсь на страницу входа как ожидается, но на самом деле я не вышел из системы, потому что, если я снова зайду на страницу, я увижу, что снова вошел в систему, не выполняя никаких дальнейших операций входа в систему.
Это моеstaticwebapp.config.json
файл
{
"responseOverrides":
{
"401":
{
"statusCode": 302,
"redirect": "/.auth/login/aadb2c"
}
},
"routes":[
{
"route": "/.auth/login/aadb2c",
"allowedRoles": [ "anonymous" ]
},
{
"route": "/.auth/login/aad",
"allowedRoles": [ "anonymous", "authenticated" ],
"statusCode": 404
},
{
"route": "/.auth/login/apple",
"allowedRoles": [ "anonymous", "authenticated" ],
"statusCode": 404
},
{
"route": "/.auth/login/facebook",
"allowedRoles": [ "anonymous", "authenticated" ],
"statusCode": 404
},
{
"route": "/.auth/login/github",
"allowedRoles": [ "anonymous", "authenticated" ],
"statusCode": 404
},
{
"route": "/.auth/login/google",
"allowedRoles": [ "anonyous", "authenticated" ],
"statusCode": 404
},
{
"route": "/.auth/login/twitter",
"allowedRoles": [ "anonymous", "authenticated" ],
"statusCode": 404
},
{
"route": "/login*",
"allowedRoles": [ "anonymous" ],
"rewrite": "/.auth/login/aadb2c"
},
{
"route": "/logout*",
"allowedRoles": [ "authenticated" ],
"rewrite": "/.auth/logout"
},
{
"route": "/.auth/me",
"allowedRoles": ["authenticated","anonymous"]
},
],
"auth":
{
"identityProviders":
{
"customOpenIdConnectProviders":
{
"aadb2c":
{
"registration":
{
"clientIdSettingName": "AADB2C_PROVIDER_CLIENT_ID",
"clientCredential":
{
"clientSecretSettingName": "AADB2C_PROVIDER_CLIENT_SECRET"
},
"openIdConnectConfiguration":
{
"wellKnownOpenIdConfiguration": "https://{tenantId}.b2clogin.com/
{tenantId}.onmicrosoft.com/v2.0/.well-known/
openid-configuration?p={userFlowName}"
}
},
"login":
{
"nameClaimType": "emails",
"scopes": ["openid"]
}
}
}
}
}
}
а вотLoginDisplay
компонент бритвы, который я показываю на главной странице:
<AuthorizeView>
<Authorized>
Hello @context.User?.Identity?.Name!
<a href="/logout">Log out</a>
</Authorized>
<NotAuthorized>
<a href="/login">Log in</a>
</NotAuthorized>
</AuthorizeView>
Что мне не хватает?
РЕДАКТИРОВАТЬ: другая информация, которая может быть полезна.
- В пользовательском потоке для свойства Требовать токен идентификатора в запросах на выход установлено значение
True
- URL-адрес выхода из внешнего канала для зарегистрированного приложения установлен на
'https://{NAME}.azurestaticapps.net/.auth/logout'
1 ответ
Кажется, что люди просто реализуют функцию входа в свое приложение и забывают о выходе из системы :)
Я исправил эту проблему, изменив правила маршрута. Пользователь также должен выйти из вашего поставщика аутентификации.