假设一个新的应用程序X是一个Oauth2客户端,允许它的用户与其他Oauth2提供商(如谷歌)注册/登录。因此,用户U使用谷歌注册,并定期使用谷歌登录到应用程序X。
但是,如果X也是Oauth2提供程序,会发生什么呢?在允许使用U登录X的应用程序中,这将是一个糟糕的体验,因为用户将被多次重定向,直到最终提供者(Google)到达为止。从理论上讲,允许使用X登录的应用程序也可能成为将来的提供者。因此,重定向的次数不严格限制在2。
那么,应用程序不能同时成为Oauth2提供程序和Oauth2客户端吗?
发布于 2019-04-27 10:11:29
是的,这是非常常见的,也是由身份协议(如OAuth2和SAML )提供便利的场景之一。
假设您有一个应用程序,并且决定将身份管理外包给Azure AD B2C。
您的应用程序将是OAuth2或OpenID连接到Azure AD B2C的客户端。
现在,您希望您的用户能够使用电子邮件/密码组合,或者使用身份提供者登录,比如Facebook或Google ( login.realmadrid.com所具有的那种体验,它使用AAD B2C)。
因此,用户来到您的应用程序并单击“登录”。您的应用程序将将请求发送到AAD B2C,后者将要求用户输入电子邮件/密码并显示Facebook和Google的按钮。如果用户现在单击其中一个按钮,那么AAD B2C将成为客户端,并使用OAuth2将用户发送给任何一个国内流离失所者。
用户在Facebook或Google中输入凭证,向AAD B2C发出令牌,它将使用该令牌,然后向您的应用程序发出令牌。
现在,当添加更多的国内流离失所者或删除现有的国内流离失所者,或者如果国内流离失所者使用不同的协议,因为您的应用程序只需要与AAD B2C交互时,您的应用程序就不需要改变了。
https://security.stackexchange.com/questions/209110
复制相似问题