首页 > 解决方案 > 在 ASP.NET Core 中配置 return_type 字段

问题描述

我正在使用该AuthenticationBuilder.AddOAuth(...)方法将 OAuth 功能添加到我的站点。这对于我要连接的一项服务非常有效,但对于第二项服务则不然。

显然,在重定向到授权端点期间,第二个服务需要将 URL 参数return_type设置为token,但我的配置将其设置为code。到目前为止,我还没有找到OAuthOptions决定这个参数的部分。


为方便起见,我将添加我正在使用的代码:

authBuilder.AddOAuth(Identifier, options =>
{
    options.ClientId = ClientId;
    options.ClientSecret = ClientSecret;
    options.CallbackPath = new PathString($"/signin-{Identifier}");
    options.AccessDeniedPath = new PathString("/");
    
    options.AuthorizationEndpoint = Domain + AuthorizationEndpoint;
    options.TokenEndpoint = Domain + TokenEndpoint;
    options.UserInformationEndpoint = Domain + UserInfoEndpoint;

    options.ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, NameIdentifierKey);
    options.ClaimActions.MapJsonKey(ClaimTypes.Name, NameKey);

    options.SaveTokens = true;

    options.Events = new OAuthEvents
    {
        OnCreatingTicket = async context =>
        {
            var request = new HttpRequestMessage(HttpMethod.Get, context.Options.UserInformationEndpoint);
            request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", context.AccessToken);

            var response = await context.Backchannel.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, context.HttpContext.RequestAborted);
            response.EnsureSuccessStatusCode();

            var user = await JsonDocument.ParseAsync(await response.Content.ReadAsStreamAsync());

            context.RunClaimActions(user.RootElement);
        }
    };

    options.Scope.Add(Scope);
});

标签: c#asp.net-coreoauth

解决方案


推荐阅读