oAuth客户端-更改response_type

时间:2020-09-23 11:00:40

标签: asp.net-core

如何在“ OAuth客户端”的Startup.cs中将response_type更改为令牌?

服务器仅识别response_type等于令牌的请求。

services.AddOAuth("OurServer", config => {
    config.ClientId = "client_id";
    config.ClientSecret = "client_secret";
    config.CallbackPath = "/oauth/callback";
    config.AuthorizationEndpoint = "https://localhost:44382/oauth/authorize";
    config.TokenEndpoint = "https://localhost:44382/oauth/token";
    config.SaveTokens = true;
    config.Events = new OAuthEvents()
    {
        OnCreatingTicket = context =>
        {
            var accessToken = context.AccessToken;
            var base64payload = accessToken.Split('.')[1];
            var bytes = Convert.FromBase64String(base64payload);
            var jsonPayload = Encoding.UTF8.GetString(bytes);
            var claims = JsonConvert.DeserializeObject<Dictionary<string, string>>(jsonPayload);

            foreach (var claim in claims)
            {
                context.Identity.AddClaim(new Claim(claim.Key, claim.Value));
            }

            return Task.CompletedTask;
        }
    };
});

1 个答案:

答案 0 :(得分:1)

默认情况下,OAuth身份验证处理程序在内部使用response_type='code',并且不允许您更改-reference here

如果要更改,必须创建一个自定义的OAuth身份验证处理程序并覆盖BuildChallengeUrl(),您可以在其中设置response_type

您可以在此处查看如何使用自定义处理程序:link

相关问题