Я настраиваю свой идентификационный сервер для получения доступа от временного порта, перенаправленного ip.Логин работает отлично, когда я запускаю все локально, но когда я начинаю использовать свой общедоступный IP-адрес, он говорит, что мой client_id отсутствует или слишком длинный.
Сначала я получил ошибку, что не смог получить доступ к локальному http-запросу.Это произошло из-за того, что конечные точки не использовали правильный URI перенаправления.Я изменил это, изменив общедоступное происхождение сервера удостоверений.
После этого я смог зайти на свою страницу входа и попытаться войти в систему, чтобы получить ошибку
Извините, произошла ошибка: invalid_request Invalid client_id
Я проверил идентификатор клиента, но он правильный.В консоли я получаю
fail: IdentityServer4.Validation.AuthorizeRequestValidator[0]
client_id is missing or too long
{
"SubjectId": "anonymous",
"RequestedScopes": "",
"Raw": {
"ReturnUrl": "/connect/authorize/callback?client_id=pokemon_code&redirect_uri=http%3A%2F%2Fbackendpokemonsite.azurewebsites.net%2Fsignin-oidc&response_type=id_token%20code&scope=openid%20profile%20pokemon%20role%20offline_access%20email&response_mode=form_post&nonce=636932445888919509.YTM5OTBlNDMtNWJkNC00MTJiLWI3YjAtNTIzMzY0ZmNkOGEyNzNlMjVhZjQtZGJhNC00MDk2LWIxYjItY2MwNWFmYTczNmU0&state=CfDJ8IxZ9MXLdlhLon2k58KSiTd3i19Dt1TM93X6-L-_SyUK_xpG5zn90n4y9RtMGlieCkdOPPnAg2VXrLoy1EXTZgGlLmsd7EIqORzq37XbF6Zj23rr7_shXOQcLY87Dywalv4VrRj6HKqUnNFGUE8cCKSXc6uiH0LDBTDPqAuU2QWWRJf-a07TAZw2YdbvanEbueXDKAL9ty57_O2pY1rS5_7ViiVVu_GP3ct8ytW6wY8_BBArqQZW7BspbQV5YzDfseVcSnh1dIRPXZTSvUyHWMvBIQTYb_xhctLoOpdzQC41XMCjP9lpkTBm2Vwv-izxlDWbT58DnVwNKnYTYUn0nhA",
"Username": "username",
"Password": "password",
"button": "login",
"__RequestVerificationToken": "CfDJ8N6qinc1TjFHrjbGhp-Exm0qSNXoKKJC77ipFBHfZWz2ukCowIEjgzRUy3ZRex2SEVLByyYCDoOfjxR-JUfdBj6IDUZAI5EHcFklOPLssWob-yJrrCio3VyrClZnlYkHSif3-yDvU0w-2GDs6S2lIKM",
"RememberLogin": "false"
}
}
fail: IdentityServer4.Endpoints.AuthorizeEndpoint[0]
Request validation failed
Мои службы onconfigure от моего сервера идентификации, где я меняю расположение конечных точек на мой публичный IP:
services.AddIdentityServer(options=> options.PublicOrigin= "http://public-endpoint")
.AddSigningCredential(new X509Certificate2(AppDomain.CurrentDomain.BaseDirectory + "Configuration/pokemon.pfx","secretpassword")) .AddResourceOwnerValidator<ResourceOwnerPasswordValidator>()
.AddConfigurationStore(options => options.ConfigureDbContext = builder => builder.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"), dboptions => dboptions.MigrationsAssembly(assembly)))
.AddOperationalStore(options => options.ConfigureDbContext = builder => builder.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"), dboptions => dboptions.MigrationsAssembly(assembly)))
.AddAspNetIdentity<IdentityUser>();
Это мой onconfigure для моего веб-проекта:
JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
services.AddAuthentication(options=> {
options.DefaultScheme = "Cookies";
options.DefaultChallengeScheme = "oidc";
}).AddCookie("Cookies").AddOpenIdConnect("oidc",openid=> {
openid.SignInScheme = "Cookies";
openid.AuthenticationMethod = Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectRedirectBehavior.FormPost;
openid.Authority = "http://public-endpoint/";
openid.RequireHttpsMetadata = false;
openid.ClaimActions.Add(new RoleClaimAction());
openid.ClientId = "pokemon_code";
openid.ClientSecret = "secret";
openid.ResponseType = "id_token code";
openid.Scope.Add("pokemon");
openid.Scope.Add("role");
openid.Scope.Add("offline_access");
openid.Scope.Add("email");
openid.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
{
RoleClaimType = "role",
NameClaimType="role"
};
openid.GetClaimsFromUserInfoEndpoint = true;
openid.SaveTokens = true;
});
Я ожидаю, что веб-сайт войдет в систему и запросит разрешение на использование данных учетной записи.но теперь я получаю сообщение об ошибке: «Извините, произошла ошибка: invalid_request Invalid client_id».Я довольно плохо знаком с сервером идентификации, так что я что-то пропустил?