Я пытаюсь заставить приложение Xamarin работать с сервером идентификации. Я следовал за этими шагами:
1) Скачать это: https://github.com/IdentityModel/IdentityModel.OidcClient.Samples/tree/master/XamarinForms
2) Запустите приложение Xamarin Forms из пункта 1. Это работает, как и ожидалось, то есть я могу войти как Боб, и я аутентифицирован на общедоступном демонстрационном приложении: https://demo.identityserver.io
Это работает, как и ожидалось до здесь.
3) Затем я загружаю общедоступное демонстрационное приложение здесь: https://github.com/IdentityServer/IdentityServer4.Demo. Добавьте его в решение Xamarin.
4) в раствор; выполните поиск и замену - от https://demo.identityserver.io до http://localhost:24997/ (это URL-адрес моего сервера идентификации внутри решения).
5) Закомментируйте следующие строки кода, поскольку я не использую Azure:
//Startup.cs
//.AddGoogle("Google", options =>
//{
// options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
// options.ClientId = Configuration["Secret:GoogleClientId"];
// options.ClientSecret = Configuration["Secret:GoogleClientSecret"];
//})
//.AddOpenIdConnect("aad", "Sign-in with Azure AD", options =>
//{
// options.Authority = "https://login.microsoftonline.com/common";
// options.ClientId = "https://leastprivilegelabs.onmicrosoft.com/38196330-e766-4051-ad10-14596c7e97d3";
// options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
// options.SignOutScheme = IdentityServerConstants.SignoutScheme;
// options.ResponseType = "id_token";
// options.CallbackPath = "/signin-aad";
// options.SignedOutCallbackPath = "/signout-callback-aad";
// options.RemoteSignOutPath = "/signout-aad";
// options.TokenValidationParameters = new TokenValidationParameters
// {
// ValidateIssuer = false,
// ValidAudience = "165b99fd-195f-4d93-a111-3e679246e6a9",
// NameClaimType = "name",
// RoleClaimType = "role"
// };
//})
//Program.cs
//.ConfigureAppConfiguration((ctx, builder) =>
//{
// var config = builder.Build();
// var tokenProvider = new AzureServiceTokenProvider();
// var kvClient = new KeyVaultClient((authority, resource, scope) => tokenProvider.KeyVaultTokenCallback(authority, resource, scope));
// builder.AddAzureKeyVault(config["KeyVault:BaseUrl"], kvClient, new DefaultKeyVaultSecretManager());
//})
6) Добавить options.RequireHttpsMetadata = false; в IdentityServer.Startup.
Затем я запускаю приложение Xamarin и сервер удостоверений. Я вижу ошибку в следующей строке внутри приложения Xamarin (первая строка: MainPage.Login_Clicked):
_result = await _client.LoginAsync(new LoginRequest());
Ошибка: Error connecting to http://localhost:24997/.well-known/openid-configuration
Есть что-нибудь очевидное, что я делаю не так?