我有一个使用ASP.NET Identity运行的IdentityServer4应用程序。我想使用它,以便来自其他应用程序的用户可以通过我的远程身份服务器登录。
我已使用以下设置在身份服务器中配置了客户端应用程序(仅显示相关设置):
ClientId: mvc
ProtocolType: oidc
ClientSecret: K7gNU3sdo+OL0wNhqoVWhr3g6s1xYv72ol/pe/Unols=
(URLs to client app)
RedirectUri: https://localhost:44313/signin-oidc
PostLogoutRedirectUri: https://localhost:44313/signout-callback-oidc
GrantType: Hybrid
我的客户端应用程序(服务器端Blazor应用程序)在Startup.cs
中配置了以下设置。
// Add authentication
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme)
.AddOpenIdConnect(OpenIdConnectDefaults.AuthenticationScheme, options =>
{
options.RequireHttpsMetadata = false;
options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.Authority = "http://localhost:5000/"; // local identity server url
options.ClientId = "mvc";
options.ClientSecret = "K7gNU3sdo+OL0wNhqoVWhr3g6s1xYv72ol/pe/Unols=";
options.ResponseType = OpenIdConnectResponseType.CodeIdToken;
options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true;
options.Scope.Add("profile openid web_api");
});
启动客户端应用程序后,我将重定向到我的IdentityServer登录页面。然后,我可以使用用户名和密码登录。登录后,我将被重定向回我的客户端应用程序https://localhost:44313/signin-oidc
。
但是随后我在该页面上收到以下错误:
OpenIdConnectProtocolException:消息包含错误:'invalid_client',错误说明:'error_description为空',error_uri:“ error_uri为空”。
对我来说,我好像使用的是正确的ClientId
?
我在做什么错?
ClientSecret应该包含未加密的值。看看documentation。
在您的情况下秘密。
options.ClientSecret = "secret";
我没有进一步看,所以如果此更改不能解决问题,请告诉我。