2013-10-01 49 views
2

我實現使用DotNetOpenAuth一個的OAuth2提供商。 使用隱流,我是有能力額外的數據傳遞給函數CreateAccessTokenIAuthorizationServerHost),帕拉姆(IAccessTokenRequest accessTokenRequestMessage)內並分配給令牌:如何設置額外數據到訪問令牌的授權碼流

accessToken.ExtraData.Add("DeptID", accessTokenRequestMessage.ExtraData["DeptID"].ToString()); 

我完成它添加在Auhtorize端點內EndUserAuthorizationRequest的信息。

的問題是,使用授權碼流,並做同樣的事情,帕拉姆(IAccessTokenRequest accessTokenRequestMessage)始終的而額外的空集合。

我想,這是因爲使用這種流動有第二個電話到令牌端點,信息丟失。

我怎麼會將此信息傳遞給CreateAccessToken功能? 在此先感謝。

+0

我試圖找回從cookie信息,但調用令牌端點時cookie將被丟失。在調用ProcessUserAuthorization()中的Token端點時,DNOA似乎在後臺使用Web客戶機。任何想法? – dave

+0

它應該像這樣實現: https://groups.google.com/forum/#!searchin/dotnetopenid/ExtraData/dotnetopenid/acqpZfDlvKE/tGSdGs_OyskJ 但是這樣做我得到錯誤的請求答案(協議錯誤)。 AuthorizationServer as; var response = as.PrepareApproveAuthorizationRequest(req,username,scopes,callback); response.ExtraData [「用戶名」] =用戶名; return as.Channel.PrepareResponse(response).AsActionResult(); – dave

回答

1

我實現將信息傳遞給令牌創建的唯一方法是使用用戶屬性:

var response = this.AuthServer.PrepareApproveAuthorizationRequest(AuthorizationRequest, userInfoString); 

我已經過了所需要的信息JSON序列化的加密字符串。然後,從CreateAccessToken函數中,我使用Reflection over IAccessTokenRequest參數檢索了值。

這不是一個解決方案,優雅如我所願,但至少它的工作!

相關問題