微软Owin对谷歌认证的实现是如何在没有应用Id和应用秘密的情况下进行认证的?



OAuth框架要求客户端向授权和资源服务器注册。在OAuth中没有像在Open Id中那样的发现。

事实上,如果你尝试实现一个不使用任何库的OAuth客户端,Google授权服务器在验证redirect_uri和客户端应用程序的身份方面是更严格的服务器之一。

然而,当你使用Microsoft Owin Google Authentication Provider时,它能够通过Google对用户进行身份验证,而不需要客户端注册、客户端Id和客户端秘密,以及由Google验证的适当的redirect_uri。

这是如何工作的?微软自己的实现是如何做到这一点的呢?

实际上在OWIN/Katana 3中有两个不同的Google提供商:

  1. GoogleOAuth2AuthenticationHandler:顾名思义,基于OAuth2。从历史上看,它是最新的,并且在2015年7月仍然支持。

  2. GoogleAuthenticationHandler:基于OpenID 2.0,当Google开始弃用它的OpenID 2.0支持时,这个被标记为Obsolete: https://developers.google.com/identity/sign-in/auth-migration#timetable。该提供商不再工作,你将被谷歌重定向到一个帮助页面,解释OpenID 2.0支持已被删除。

提供程序是由Katana根据您在代码中使用的扩展名"自动"选择:https://github.com/jchannon/katanaproject/blob/master/src/Microsoft.Owin.Security.Google/GoogleAuthenticationExtensions.cs

只有OpenID 2.0提供程序允许您通过Google进行身份验证,而无需首先注册您的应用程序:如果您尝试使用OAuth2提供程序而不指定client_idclient_secret,将抛出异常。

最新更新