如何让OpenIddict在invalid_scope错误时重定向回客户端?
如何让OpenIddict在触发invalid_scope错误时重定向回客户端应用?
当前OpenIddict在授权端点遇到invalid_scope错误时,会直接返回以下内容并中断流程:
error:invalid_scope error_description:The specified 'scope' is invalid. error_uri:https://documentation.openiddict.com/errors/ID2052
根据OAuth 2.0规范:
如果资源所有者拒绝访问请求,或者请求因缺失/无效重定向URI之外的原因失败,授权服务器应通过在重定向URI的查询组件中添加相应参数来通知客户端...
我想知道是否存在我遗漏的配置选项,或者可以通过挂钩事件来覆盖当前的错误处理行为?
编辑:我找到了一个事件挂钩方案,但它会在重定向URI验证之前触发,因此存在安全风险:
options.AddEventHandler<ApplyAuthorizationResponseContext>(builder => { builder.UseInlineHandler(responseContext => { if (responseContext.Error != null && responseContext.Error == "invalid_request" && (responseContext.Response.Error == "invalid_scope" || (responseContext?.Response?.ErrorDescription?.Contains("scope is not allowed") ?? false)) ) { responseContext.ResponseMode = "query"; var issuer = responseContext?.BaseUri?.AbsoluteUri ?? string.Empty; var state = responseContext?.Request?.State ?? string.Empty; // 不要这么做,重定向URI可能无效 responseContext!.RedirectUri = $"{responseContext?.Request?.RedirectUri}?state={HttpUtility.UrlEncode(state)}&iss={HttpUtility.UrlEncode(issuer)}"; } return default; }); });
内容的提问来源于stack exchange,提问作者Steve P
相关产品推荐
相关产品推荐

