我希望使用第三方身份验证(OpenID,可能是OAuth,但我猜OAuth是用于授权的),以便用户可以轻松登录。
但是,每次请求身份验证是否意味着我即使不需要来自第三方(例如Google)的任何东西也要多次调用它?例如,我使用OpenID身份验证,但我使用的API是一些内部的东西(例如/api/tasks/add)。
我希望使用第三方身份验证(OpenID,可能是OAuth,但我猜OAuth是用于授权的),以便用户可以轻松登录。
但是,每次请求身份验证是否意味着我即使不需要来自第三方(例如Google)的任何东西也要多次调用它?例如,我使用OpenID身份验证,但我使用的API是一些内部的东西(例如/api/tasks/add)。
首先,让我们解决理解问题。OpenID和OAuth有些不同。有一个简单的方法可以记住它们的区别:
wikipedia提供了一个简单的解释:
请注意,对于OpenID,该过程始于应用程序请求用户的身份(通常是openid URI),而在OAuth的情况下, 应用程序直接请求受限制的访问OAuth Token (代客钥匙),以代表用户访问APIs (进入房屋)。 如果用户可以授予该访问权限,则应用程序可以使用APIs检索用于建立资料(身份)的唯一标识符。
所以,我想使用第三方身份验证...让用户可以轻松登录。
可能意味着您将使用OpenID。
回答您的问题:您不需要在任何请求上调用任何第三方服务。这将非常低效和缓慢。OpenID提供程序将返回用户的凭据,然后您就可以开始了。
请确保您已正确识别需求。UserProfile
,我是否可以使用它?但这似乎不安全,任何人都可以获取此信息并像用户一样使用该应用程序? - Jiew MengOpenID Connect是建立在OAuth2之上的身份验证机制。客户端获取了一个可以在每个请求中作为授权头部发送到资源服务器的承载令牌。
这个ID Token是由OpenID提供者签名的JWT。解码后的令牌长这样:
{
"iss": "https://server.example.com",
"sub": "24400320",
"aud": "s6BhdRkqt3",
"exp": 1311281970,
"iat": 1311280970
}