Как войти в Duende IdentityServer из мобильного приложения Android

Мы разрабатываем веб-приложение ASP.NET с интерфейсом Angular.

Проект старый, он был перенесен в Дуэнде из старой версии, где аутентификация осуществлялась нами с помощью токенов. После того как в проект по умолчанию в Visual Studio была добавлена ​​поддержка аутентификации отдельных пользователей (начиная с dotnet 6), мы начали мигрировать код в новый проект с улучшенной аутентификацией (Duende).

Мы также пытаемся создать приложение для Android, мы добавили клиент в appsettings.json:

      "Clients": {
      "AppName": {
        "Profile": "IdentityServerSPA",
      },
      "AndroidID": {
        "Profile": "IdentityServerSPA",
        "Enabled": true,
        "ClientId": "AndroidID",
        "RequireClientSecret": false,
        "ClientName": "AndoidApp",
        "ClientSecrets": [ { "Value": "" } ],
        "RequirePkce": true,
        "AllowedGrantTypes": [ "code", "implicit", "client_credentials" ],
        "AllowedScopes": [ "openid", "profile", "email", "phone", "api" ],
        "RedirectUris": [ "https://aaa/well-known/openid-configuration" ],
        "RequireConsent": false,
        "AllowOfflineAccess": true
      }
    }

На стороне Android мы используем библиотеку: https://github.com/openid/AppAuth-Android . В наших тестах мы меняем конфигурацию примера приложения из репозитория AppAuth.

      {
  "client_id": "AndroidID",
  "redirect_uri": "https://aaa/authentication/login-callback",
  "end_session_redirect_uri": "https://aaa/connect/endsession",
  "authorization_scope": "openid email profile SIGADAPI",
  "authorization_endpoint_uri": "https://aaa/identity/account/login",
  "token_endpoint_uri": "https://aaa/connect/token",
  "registration_endpoint_uri": "",
  "user_info_endpoint_uri": "https://aaa/home",
  "https_required": true,
  "end_session_endpoint": "https://aaa/connect/endsession",
  "client_secret" : "",
  "response_types": "code",
  "jwks_uri": "https://aaa/.well-known/openid-configuration/jwks",
  "revocation_endpoint": "https://aaa/connect/revocation",
  "grant_types": [ "code", "implicit", "client_credentials"],
  "scopes_supported" :  [ "openid", "profile", "email", "phone", "SIGADAPI" ]
}

Проблема в том, что в Login.cshtml returnUrl имеет значение null. В C# мы получаем успешный ответ для _signInManager.PasswordSignInAsync, но у нас нет действительного returnUrl для обратного вызова, поэтому в конечном итоге в Android мы не вошли в систему.

Я знаю, что ответ действительно прост, и мы надолго застряли на этом этапе, но что мы делаем не так и как вам удается войти в систему с другого клиента.

Версия dotnet — 6, а Duende IdentityServer — 6.0.8.

Большое спасибо за Вашу помощь

0 ответов

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