如何将身份验证令牌放在URL上作为查询参数

本文关键字:查询 参数 URL 身份验证 令牌 | 更新日期: 2023-09-27 18:18:59

我正在做一个PayPal Express Checkout上我的ASP。. Net MVC网站。

该网站使用令牌身份验证,所以我试图把令牌在PayPal返回URL作为查询参数。

我有一个处理程序,拦截所有请求到我的网站,并从URL或请求头提取令牌。

可以很好地从标题中获取它,但当它是一个查询参数时,我得到以下异常。我从我的声明主体中获得令牌,并且不进行任何编码/解码。我试过这种方法,但没有运气(同样的异常发生)。

System.ArgumentException was caught
  HResult=-2147024809
  Message=Jwt10204: 'System.IdentityModel.Tokens.JwtSecurityTokenHandler' cannot read this string: '{really long token}'.
The string needs to be in compact JSON format, which is of the form: '<Base64UrlEncodedHeader>.<Base64UrlEndcodedPayload>.<OPTIONAL, Base64UrlEncodedSignature>'.
  Source=System.IdentityModel.Tokens.Jwt
  StackTrace:
       at System.IdentityModel.Tokens.JwtSecurityTokenHandler.ReadToken(String jwtEncodedString)
       at {our namespace}.Providers.JwtTokenServiceProvider.GetToken(String value)
       at {our namespace}.TokenAuthorisationController.Post(TokenRequest request)

如何将身份验证令牌放在URL上作为查询参数

原来问题是PayPal在URL的末尾附加了另一个字符串(看起来像PayPal Express Checkout令牌),用逗号作为分隔符,而不是"&"符号。

所以我通过删除逗号字符和逗号后面的额外字符来增加JWT令牌来解决这个问题。