当您拥有Google的令牌,idToken等时,可以从Web API获取access_token

时间:2018-07-03 21:20:10

标签: angular asp.net-web-api jwt access-token google-authentication

我使用angular-6-social-login在我的网站上通过google登录,如链接所示。现在它返回以下数据=>

email:"xxxxx"
id:"xxxxxxx"
idToken:"xxxx.xxxxxxxxx.xxxxxx"
image:"https://lh5.googleusercontent.com/xxxx/photo.jpg"
name:"Abhishek Jaiswal"
provider:"google"
token:"ya29.GlztBZpLW2v1jld20GR0iHOjMiveYmDhnaDRjWmsmh8tH_DSVW4-lRnYIL4Eau2-ZKVXlFFK-alCk5-REBR22aKkeUUIats14KtXEGfHlZIw5iIlKP5LSuEAtmnG0w"

我在Web Api上将idToken解码为JSON Web Token Decoder,并通过idToken的“ at_hash”值交叉检查了令牌(由Google提供的accessToken)。 现在,经过大量验证之后,我会检查用户的先前注册,并将其注册到if块内。

注意:我正在手动进行这些验证和注册。因此,我没有使用Web ApiIdentity提供的方法,例如ExternalLogin等。

在正常登录的情况下,我向http://localhost:57310/token发出了用户名,密码和grant_type的发布请求,并向我提供了accessToken,因此它是经过授权的。

但是,在这种情况下,我已经在使用API​​,因此不需要任何发布请求,并且我已经拥有了令牌(由google提供),但是该API不是由网络api提供的,因此未经授权。

1 个答案:

答案 0 :(得分:1)

对于此用例,建议您使用ng-gapi。它将允许您登录Google,检索凭据(带有身份的JWT),并请求将access_token与Google API调用一起使用。

在幕后,它是一个Google Sign-in API集成。因此,不必担心例如刷新access_token以及验证JWT签名。