gpt4 book ai didi

asp.net - 如何使用 OWIN 在承载/访问 token 中定义 clientID(或其他数据)

转载 作者:行者123 更新时间:2023-12-02 21:22:29 25 4
gpt4 key购买 nike

我正在尝试弄清楚如何将 clientID(或我可能需要的任何其他数据)放入承载/访问 token 中。

我正在使用 OWIN OAuth 创建 token 。我可以向身份票据添加声明,然后将其加密/序列化到 token 中并传回客户端。

然后,客户端调用 protected API,该 API 会反序列化 token 并为用户设置 IPrinciple。此身份对象包含用户名以及 ClaimsIdentity 中的范围。

我想获取其他信息,例如首先发出获取 token 请求的 clientID。

我可以将此数据放入 claim 中;这显然有效,但它是一个黑客。

我已经进行了大量搜索,但我不确定如何(如果可能)在承载/访问 token 内存储其他数据。

提前致谢!

最佳答案

您可以将其存储在AuthenticationProperties对象中,代码如下:

            var props = new AuthenticationProperties(new Dictionary<string, string>
{
{
"as:client_id", (context.ClientId == null) ? string.Empty : context.ClientId
},
{
"userName", context.UserName
}
});

var ticket = new AuthenticationTicket(identity, props);

要读取它,您需要取消对 token 的保护,如下面的代码所示,然后从票证中读取属性。我找不到在不传递 token 的情况下创建 token 的直接方法,我知道这不是最终的答案,但它可能会有所帮助。

 string token = "TOKEN GOES HERE";
Microsoft.Owin.Security.AuthenticationTicket ticket = Startup.OAuthBearerOptions.AccessTokenFormat.Unprotect(token);

关于asp.net - 如何使用 OWIN 在承载/访问 token 中定义 clientID(或其他数据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26876940/

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