尝试从 .NET Core Web 应用程序使用 OpenIDConnect 进行身份验证时范围无效

问题描述 投票:0回答:2

因此,当我尝试在 .NET Core 应用程序中设置 OpenIDConnect 进行身份验证时,遇到了一个相当不寻常的问题。

我已经使用 Okta 运行了测试,一切正常,但是当使用不同的服务切换详细信息以进行身份验证时,我收到以下错误。

OpenIdConnectProtocolException: Message contains error: 'invalid_scope', error_description: 'The requested scope is invalid, unknown, malformed, or exceeds that which the client is permitted to request.', error_uri: 'error_uri is null'.

Program.cs 文件中的所有内容看起来都已正确设置,如下所示

.AddOpenIdConnect(o =>
{
    o.SignInScheme = "Cookies";
    o.ClientId = config.GetSection("SsoConfig:ClientId").Value;
    o.ClientSecret = config.GetSection("SsoConfig:ClientSecret").Value;
    o.Authority = config.GetSection("SsoConfig:Authority").Value;
    o.SignedOutRedirectUri = config.GetSection("SsoConfig:SignedOutRedirectUri").Value;
    o.ResponseType = "code";
    o.Scope.Add("openid");
    o.Scope.Add("profile")
}

有什么想法可能会导致此错误吗?据我所知,一切都设置正确,并且在使用 Okta 时它可以工作,但我们切换到它的另一个提供商失败并出现上述错误。这是客户使用的第 3 方服务,我们必须连接到该服务,因此我们提供了我在 Okta 上输入的相同详细信息,因此我知道它们应该可以工作。

也许我错过了一些明显的东西,但文档显示了上述方法。

作为参考,它是一个 .NET 6 Core Web 应用程序,我使用的库是 Microsoft.AspNetCore.Authentication.OpenIdConnect (6.0.9)

非常感谢。

c# .net asp.net-core openid-connect
2个回答
1
投票

虽然我很晚才回答这个问题,但今天我在使用 AWS Cognito 进行身份验证时也遇到了同样的问题。

我发现

AddOpenIdConnect
方法默认添加 2 个两个范围 -
openid
profile
,这就产生了问题。

enter image description here

作为解决方案,我只是清除了默认范围并手动添加了所需的范围。

.AddOpenIdConnect(OpenIdConnectDefaults.AuthenticationScheme , options =>
{
    .
    .
    .
    options.Scope.Clear();
    options.Scope.Add("openid");
    options.Scope.Add("email");
    options.Scope.Add("phone");
});

0
投票

就我而言,我必须删除以下中间件方法,因为我的身份提供程序 (Cognito) 未配置刷新令牌(

ALLOW_REFRESH_TOKEN_AUTH
已禁用)。

builder.Services.ConfigureCookieOidcRefresh(CookieAuthenticationDefaults.AuthenticationScheme, MS_OIDC_SCHEME);

仅供参考,我正在关注 Microsoft“BlazorWebAppOidc”示例:

https://github.com/dotnet/blazor-samples/tree/main/8.0/BlazorWebAppOidc

© www.soinside.com 2019 - 2024. All rights reserved.