【问题标题】:Get access_token from Web API, when you have token, idToken, etc, from Google当您从 Google 获得令牌、idToken 等时,从 Web API 获取 access_token
【发布时间】:2018-12-12 06:17:12
【问题描述】:

我在我的网站中使用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 的post 请求,并为我提供了accessToken,因此它被授权。

但是,在这种情况下,我已经在 API 上,所以不需要任何 post 请求,并且我已经有令牌(谷歌),但是这个不是 web api 提供的,所以没有授权。

【问题讨论】:

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


    【解决方案1】:

    对于这个用例,我建议您使用ng-gapi。它将允许您使用 Google 登录、检索凭据(带有身份的 JWT)并请求访问令牌以用于 Google API 调用。

    在幕后,这是一个 Google Sign-in API 集成。所以不用担心刷新 access_token 和验证 JWT 签名。

    【讨论】:

    • 我猜,它只是在角度做所有事情,但是我必须将用户数据发送到 web api 以将它们存储在数据库中。在获取配置文件时,我会在登录期间发送 access_token 集,并由 web api 验证并提供配置文件数据。所以,access_token 应该在 webapi 中设置,这个方法会从 google 提供给 angular。
    • 我解决了问题,并编辑了问题,包括我如何验证所有内容(针对所有人)。但是你的方法也很有用。我只是不知道它与基于 Web API 令牌的身份验证和数据检索有何关系。所以,不要删除这个答案。并且,看看更新的问题。
    • 嗨@AbhishekJaiswal 你能使用社交登录获得刷新令牌吗??
    • 嗨 @Thierry Falvo 如果我们使用 ng-gapi 获取访问令牌,它会持续很长时间吗?还是 60 分钟后过期?
    • @eshwarchettri 是的,我能够做到这一点,但现在项目已经完成。我完全通过 Web API 进行了社交登录。
    猜你喜欢
    • 2020-11-30
    • 2013-03-05
    • 1970-01-01
    • 2017-05-20
    • 1970-01-01
    • 2021-01-23
    • 2016-10-13
    • 1970-01-01
    • 2011-08-06
    相关资源
    最近更新 更多