我在 asp.net mvc core 中创建了一个 webapi。api 控制器中的方法是这样修饰的 -[HttpPost]public async Task Post([FromBody] string value)然后我从 google 安排了一个作业...
我在 asp.net mvc core 中创建了一个 webapi。api 控制器中的方法装饰如下 -
[HttpPost]
public async Task Post([FromBody] string value)
然后我从 google cloud scheduler 安排了一个作业,使用 OIDC 令牌调用该作业进行身份验证。问题是,它每次都返回 415 FAILED_PRECONDITION 错误。我尝试使用 postman 中的假身份验证标头调用已发布的作业(在服务器中),它像预期的那样抛出错误,即令牌格式不正确。但是,google scheduler 甚至没有到达端点,因为我已经在任务内部进行了分步登录。
我正在验证如下令牌
string token = Request.Headers["Authorization"].ToString().Remove(0, 7); //remove Bearer
var payload = await VerifyGoogleTokenId(token);
private async Task<GoogleJsonWebSignature.Payload> VerifyGoogleTokenId(string token){
GoogleJsonWebSignature.Payload payload = await GoogleJsonWebSignature.ValidateAsync(token);
}
有趣的是,当我删除令牌检查,即在下面的行中注释并在请求正文的值字段中使用随机字符串时 - 谷歌正在到达端点并调用该作业。
string token = Request.Headers["Authorization"].ToString().Remove(0, 7)
请注意,上面一行位于 try catch 块内,因此任何错误都会被记录下来,以防万一。
所以我的问题是 -