c# - IdentityServer4 - 有没有办法在连接/令牌端点上响应声明?
问题描述
我需要在身份服务器上的连接/令牌端点的响应中添加一些字段。我想添加一些声明。有没有办法做到这一点?
我不想使用 connect/userinfo 端点,我的客户正在使用资源所有者密码流。我只想要这样的响应
{
"access_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjcxQkQwM0MxRUFBOUM3NDc3RkEwMDhFMTY4M0VCMkI4NjQ3Mjg0QjgiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJjYjBEd2VxcHgwZF9vQWpoYUQ2eXVHUnloTGcifQ.eyJuYmYiOjE1NTg5NzMyMjAsImV4cCI6MTU1ODk3NjgyMCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo1NTgzOSIsImF1ZCI6WyJodHRwOi8vbG9jYWxob3N0OjU1ODM5L3Jlc291cmNlcyIsImFwaSJdLCJjbGllbnRfaWQiOiJyZWFscGxhemEuYnVkZ2V0Iiwic3ViIjoiamFpci50YXNheWNvQHJlYWxwbGF6YS5jb20ucGUiLCJhdXRoX3RpbWUiOjE1NTg5NzMyMjAsImlkcCI6ImxvY2FsIiwiZ2l2ZW5fbmFtZSI6IkpBSVIgQU5UT05JTyIsInVzZXJfbmFtZXMiOiJKQUlSIEFOVE9OSU8iLCJ1c2VyX2xhc3RuYW1lIjoiVEFTQVlDTyIsInVzZXJfbW90aGVyX2xhc3RuYW1lIjoiQkFVVElTVEEiLCJ1c2VyX3R5cGUiOiIyIiwidXNlcl9kb2N1bWVudF9udW1iZXIiOiI0NzEwMzMwMyIsImNvZGlnb191bmljbyI6IjQyNSIsInVzZXJfcmVkIjoiUlAwNjg5Iiwic2NvcGUiOlsiYXBpIl0sImFtciI6WyJBdXRlbnRpY2FkbyJdfQ.twCgMlcOTDsaBnwmxy_kNLHVE0vtMYA_bqAjIGjatTmkLPz7ozWltoMfrlw6XUmHtre3TAcMkkoUr7Ak7qWpAiWrcuvNVgHTyfKqSjloG18KyySrhW6qFSfOdtkcNuf7bhWsJYvtiZpdzRv70xC1XrGo8Vx9hhUEQxQVDa03kQdCkeCz_EgMnmQ5JL21lUM80GS3FikZHZ2UVRXdjXkFTARM7FOb6wKnasUyIPxSGfgFKgJmjYqhpjED8gSgmo2So_qc9gpc9f8nlQlTFhuulgJO_cOioOpDE8ywHpxXyjx5dbYp4JQ0hxRjtNTyyA7oA25YMwvNBpYIMzmvqyjDTQ",
"expires_in": 3600,
"token_type": "Bearer"
, "claim_1": "XXXXXX", "claim_2" : "SSSSSS" }
解决方案
您可以像下面这样实现您的ICustomTokenRequestValidator:
public class YourCustomTokenRequestValidator: ICustomTokenRequestValidator
{
public Task ValidateAsync(CustomTokenRequestValidationContext context)
{
context.Result.CustomResponse =
new Dictionary<string, object>{{"claim_1", "XXXXXX"}, {"claim_2", "SSSSSS"}};
return Task.CompletedTask;
}
}
然后在您的启动中:
services.AddIdentityServer()
.AddCustomTokenRequestValidator<YourCustomTokenRequestValidator>();
推荐阅读
- html - 在 html 表上结合锚点偏移和目标样式
- reactjs - 状态未在 React Router v5 中传递
- typescript - 打字稿模数不起作用:测试失败
- reactjs - React Axios 调用返回整个函数
- haskell - 给定类型级别的起始 KnownNat,查找 KnownNat 的下一个因子
- java - 上下文表单循环中的多个 RestTemplateBuilders
- excel - 基于带有宏的模板创建第二个文档后文件损坏
- ios - 当应用程序进入后台时,您的应用程序中有 FaceID 或 touchID 是否会停止在后台播放音频?
- azure-devops - 有什么方法可以限制哪些池可以为 Artifact 提要做出贡献?
- c++ - 使用 Ceres Solver 求解非线性系统:编译问题