Веб-приложения 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 ответ

Кажется, что люди просто реализуют функцию входа в свое приложение и забывают о выходе из системы :)

Я исправил эту проблему, изменив правила маршрута. Пользователь также должен выйти из вашего поставщика аутентификации.

Другие вопросы по тегам