OpenIddict-Client:如何在BFF应用中注册多RedirectUri客户端
在OpenIddict v4.3.0的BFF应用中注册多RedirectUri客户端的方案
在OpenIddict v4.3.0中,OpenIddictClientRegistration的RedirectUri属性确实仅支持设置单个地址,但它本质是将该地址添加到OpenIddictClientOptions.RedirectionEndpointUris集合的快捷方式。要配置多个重定向URI,直接操作这个集合即可,以下是两种可行的实现方式:
方式一:直接在客户端配置中添加多个URI
在AddOpenIddict().AddClient()的配置委托里,直接往RedirectionEndpointUris集合中添加所有需要的重定向地址:
builder.Services.AddOpenIddict() .AddClient(options => { // 基础配置:指定授权服务器端点、客户端ID等 options.SetAuthorizationEndpointUri("https://your-auth-server.com/connect/authorize"); options.SetTokenEndpointUri("https://your-auth-server.com/connect/token"); options.SetClientId("your-bff-client-id"); // 配置授权码流+PKCE options.AllowAuthorizationCodeFlow(); options.RequireProofKeyForCodeExchange(); // 添加多个重定向URI options.RedirectionEndpointUris.Add("https://your-bff.com/callback/login"); options.RedirectionEndpointUris.Add("https://your-bff.com/callback/refresh"); options.RedirectionEndpointUris.Add("https://your-bff.com/callback/logout-callback"); });
方式二:通过PostConfigure补充额外URI
如果已经使用AddClientRegistration完成基础配置,可通过PostConfigure来追加更多重定向URI:
// 基础客户端注册配置 builder.Services.AddOpenIddict() .AddClient() .AddClientRegistration(options => { options.ClientId = "your-bff-client-id"; options.RedirectUri = "https://your-bff.com/callback/login"; // 单个初始URI options.AuthorizationEndpoint = "https://your-auth-server.com/connect/authorize"; options.TokenEndpoint = "https://your-auth-server.com/connect/token"; // 其他基础配置... }); // 追加额外的重定向URI builder.Services.PostConfigure<OpenIddictClientOptions>(options => { options.RedirectionEndpointUris.Add("https://your-bff.com/callback/refresh"); options.RedirectionEndpointUris.Add("https://your-bff.com/callback/logout-callback"); });
注意事项
- 所有配置的重定向URI必须与授权服务器端注册的客户端
RedirectUri列表完全一致(包括协议、域名、路径),否则授权服务器会拒绝授权请求。 - PKCE模式下无需配置客户端密钥,但要确保
RequireProofKeyForCodeExchange()已启用。
内容的提问来源于stack exchange,提问作者Okuhle
相关产品推荐
相关产品推荐

