如何在“ 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;
}
};
});
答案 0 :(得分:1)
默认情况下,OAuth身份验证处理程序在内部使用response_type='code'
,并且不允许您更改-reference here。
如果要更改,必须创建一个自定义的OAuth身份验证处理程序并覆盖BuildChallengeUrl()
,您可以在其中设置response_type
。
您可以在此处查看如何使用自定义处理程序:link