OpenIddictApplication 验证如何与 sqlite db 一起发生

问题描述

我有一个 sqlite 数据库,其中存储了客户端 ID 及其关联的重定向 uri 和其他值。我在我的应用程序中硬编码了重定向 uri 的值,如下所示,

[HttpGet("_configuration/{clientId}")]
        public async Task<IActionResult> GetClientRequestParameters([Fromroute] string clientId)
        {
            var parameters = await _applicationManager.GetClientParametersAsync(HttpContext,clientId,HttpContext.RequestAborted);
            return Ok(parameters);
        }

internal static class OpenIddictEntityFrameworkCoreApplicationExtensions
    {
public static async Task<IDictionary<string,string>> GetClientParametersAsync([NotNull] this OpenIddictApplicationManager<OpenIddictEntityFrameworkCoreApplication> applicationManager,HttpContext httpContext,string clientId,CancellationToken cancellationToken = default)
        {
            Check.NotNull(applicationManager,nameof(applicationManager));
            Check.NotNull(httpContext,nameof(httpContext));
            Check.NotNullOrEmpty(clientId,nameof(clientId));

            var result = new Dictionary<string,string>();

            var application = await applicationManager.FindByClientIdAsync(clientId,cancellationToken);
            if (application != null)
            {
                result.Add("authority",httpContext.GetBaseUrl());
                result.Add("client_id",application.ClientId);
                result.Add("redirect_uri",httpContext.GetLoginRedirectUri());//"https://localhost:5001/authentication/login-callback"
                result.Add("post_logout_redirect_uri",httpContext.GetlogoutRedirectUri());
                result.Add("response_type","code");
                result.Add("scope",$"openid profile");
            }

            return result;
        }

数据库中,重定向 uri 设置为 https://localhost:5001/signin-oidc。

当我尝试运行我的应用程序时,我收到错误消息“redirect_uri 对该客户端应用程序无效”。

当我将 db redirecturi 值更新为“https://localhost:5001/authentication/login-callback”时,应用程序按预期工作。

这里我的问题是,即使我在 OpenIddictEntityFrameworkCoreApplicationExtensions 中更改了重定向 uri 的值,它如何与数据库进行验证?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)