OpenIddict是否支持类似IdentityServer4的授权请求上下文?
OpenIddict没有直接和IdentityServer4的GetAuthorizationContextAsync同名的API,但提供了等效方式解析returnUrl中的原始授权请求信息:
- 使用
IOpenIddictAuthorizationService的ExtractAuthorizationRequestAsync方法,传入returnUrl就能提取出包含所有授权请求参数的OpenIddictRequest对象,功能和IdentityServer4返回的AuthorizationRequest完全一致。
示例代码(控制器中使用):
private readonly IOpenIddictAuthorizationService _authorizationService; public AuthorizationController(IOpenIddictAuthorizationService authorizationService) { _authorizationService = authorizationService; } public async Task<IActionResult> Login(string returnUrl) { // 从returnUrl解析授权请求 var request = await _authorizationService.ExtractAuthorizationRequestAsync(returnUrl); // 读取原始请求参数 string clientId = request.ClientId; IEnumerable<string> scopes = request.GetScopes(); string redirectUri = request.RedirectUri; // ResponseType、State等其他参数也可直接从request获取 // 后续业务逻辑 return View(); }
- 若在OpenIddict授权端点直接处理请求,还能将
OpenIddictRequest作为动作方法参数,框架会自动绑定所有请求参数,无需手动解析returnUrl。
OpenIddictRequest包含OAuth2/OpenID Connect授权请求的所有标准参数,完全覆盖IdentityServer4中AuthorizationRequest的信息获取需求。
内容的提问来源于stack exchange,提问作者MadNeox
相关产品推荐
相关产品推荐

