【问题标题】:How do I structure authentication with a social IdP?如何使用社交 IdP 构建身份验证?
【发布时间】:2019-04-17 06:14:18
【问题描述】:

我的系统工作如下;

我有一个 ASP.Net RESTful API 服务器,其中包含一个用户数据库。 我还有一个带有注册和登录页面的 Xamarin.Forms 应用程序。

我想要的是能够使用社交 IdP 对登录进行身份验证,然后,如果该用户之前没有登录过,则将该用户注册到我的本地数据库中。

我一直在阅读有关如何使用 OpenID Connect 实施 OAuth 2.0 以使用社交 IdP 对我的用户进行身份验证的信息,但是,我似乎无法将我的头绕在它周围。根据我的阅读,我不应该使用访问令牌进行身份验证,因为这就是 ID 令牌的用途,但是,我还了解到 ID 令牌的唯一预期目的是客户端。

那么我的问题是,我如何确保对我的 ASP.Net 服务器进行的调用是由“真人”进行的,以及如何确定谁进行了调用?

【问题讨论】:

    标签: asp.net xamarin.forms oauth-2.0 openid-connect


    【解决方案1】:

    访问令牌将用于确定客户端应用程序是否被用户授权访问资源。 ID token 的概念来源于 OpenID Connect。 ID 令牌的主要目的是向客户端应用程序验证用户身份(即让客户端应用程序知道授权访问的人是有效的人)。

    为此,您必须验证 ID 令牌。这可以使用第三方库(例如 nimbusds 或 auth0)来完成。您可以验证令牌的签名验证令牌的完整性并检查令牌中包含的声明(通过将它们与预期值进行比较)以验证用户详细信息。此外,您可以通过身份提供者将自定义声明(特定于您的应用程序/实现的任何声明)添加到令牌,以便您能够验证这些特定声明以验证用户。

    【讨论】:

    • 好的,所以当我在登录阶段验证了用户后,我如何进行其余的调用,例如调用 GET 组?然后我会继续解析 ID 令牌以验证用户的真实性,还是应该创建自己的“会话令牌”,在登录时提供给用户?我猜在使用应用程序的过程中不要求持续身份验证会很不安全?
    • 我想为用户分配一个会话令牌是个好主意。但是,如果您愿意,您可以继续解析 ID 令牌以在每个步骤中验证声明。但请记住,一遍又一遍地解码和验证的开销会很高。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-20
    • 2014-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多