Oauth 2.0 如何在授权码流中将额外数据设置到访问令牌中

Oauth 2.0 如何在授权码流中将额外数据设置到访问令牌中,oauth-2.0,dotnetopenauth,Oauth 2.0,Dotnetopenauth,我正在使用DotNetOpenAuth实现OAuth2提供程序。 使用隐式流,我能够将额外数据传递到参数(IAccessTokenRequest accessTokenRequestMessage)内的函数CreateAccessToken(IAAuthorizationServerHost),并将其分配给令牌: accessToken.ExtraData.Add("DeptID", accessTokenRequestMessage.ExtraData["DeptID"].ToString()

我正在使用DotNetOpenAuth实现OAuth2提供程序。 使用隐式流,我能够将额外数据传递到参数
(IAccessTokenRequest accessTokenRequestMessage)
内的函数
CreateAccessToken
IAAuthorizationServerHost
),并将其分配给令牌:

accessToken.ExtraData.Add("DeptID", accessTokenRequestMessage.ExtraData["DeptID"].ToString());
我在Auhtorize端点中添加了
EndUserAuthorizationRequest
中的信息

问题在于,使用授权代码流并执行相同的操作时,param
(IAccessTokenRequest accessTokenRequestMessage)
始终有一个空的ExtraData集合

我想这是因为使用这个流,有第二个对令牌端点的调用,并且信息丢失了

如何将此信息传递给CreateAccessToken函数?
提前感谢。

我向令牌创建传递信息的唯一方法是使用用户属性:

var response = this.AuthServer.PrepareApproveAuthorizationRequest(AuthorizationRequest, userInfoString);
我已经传递了所需信息的JSON序列化的加密字符串。然后,从CreateAccessToken函数中,我使用IacessTokenRequest参数上的反射检索了该值


这不是一个像我希望的那样优雅的解决方案,但至少它起了作用

我试图从cookie中检索此信息,但调用令牌端点时cookie丢失。在ProcessUserAuthorization()中调用令牌端点时,DNOA似乎在幕后使用web客户端。有什么想法吗?它应该像这样实现:但这样做我会得到错误的请求响应(协议错误)。授权服务器as;var response=as.PrepareApproveAuthorizationRequest(请求、用户名、作用域、回调);响应。外部数据[“用户名”]=用户名;返回为.Channel.PrepareResponse(response.AsActionResult();