gpt4 book ai didi

javascript - OIDC - 登录 URL 查询字符串中的额外参数

转载 作者:行者123 更新时间:2023-12-04 09:23:35 25 4
gpt4 key购买 nike

我有一个使用 OIDC 进行身份验证的 Javascript 客户端。我正在使用授权代码流。这是一个代码片段:

var config = {
authority: "http://localhost:5000",
client_id: "js",
redirect_uri: "http://localhost:5003/callback.html",
response_type: "code",
scope:"openid profile web_api",
post_logout_redirect_uri: "http://localhost:5003/index.html"
};
var mgr = new Oidc.UserManager(config);
我希望能够在 中添加额外的参数配置上面的对象将在我有权在我的授权服务器的登录方法(http://localhost:5000/Account/Login)中访问的 URL 的查询字符串中可用:
(C#代码):
// <summary>
/// Entry point into the login workflow
/// </summary>
[HttpGet]
public async Task<IActionResult> Login(string returnUrl)
{
...
}
(我可以通过 returnUrl 参数或 HttpContext.Request.Query 属性访问上面代码中的 URL 查询字符串)
不幸的是,如果我在 中设置新的(非标准)参数配置 Javascript 客户端上的对象,它们不会传递给 URL 查询字符串。
上下文化:我需要这个功能的原因是因为除了用户名和密码之外,还有一些额外的参数是我对用户进行身份验证所必需的。但是,用户并未明确告知这些参数。它们的值在客户端 Javascript 代码中分配(例如:客户端的设备 ID(如手机的 IMEI))。如果有任何其他更简单的方法可以实现这一点,我很高兴知道。
我可以使用 Postman 来实现这一点,基于 this GitHub上的讨论:
因为在 Postman 中,您可以将授权端点 URL 更改为:
http://MyAuthorizationEndpoint?paramName=paramValue
例如:http://localhost:5000/connect/authorize?device_id=XYZ
但我无法在 Javascript 客户端中执行此操作,因为我没有明确指定授权端点,只有 权威 (如上面的 配置 对象所示)。
OBS:我不打算使用任何其他类型的授权流程,例如使用扩展授权,因为它更不安全且不推荐。

最佳答案

看完this找到了解决办法讨论。方法 Oidc.UserManager.signinRedirect 接受 额外查询参数 具有这个确切目的的论点:
(Javascript 客户端):

mgr.signinRedirect({
extraQueryParams: {
device_id: "XYZ"
},
});
这对于搜索授权代码流解决方案的任何人都非常有用,在该解决方案中,您需要在发布代码/ token 之前传递自定义参数以进行验证。

关于javascript - OIDC - 登录 URL 查询字符串中的额外参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63060295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com