- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 OAuth (2) 时,我的应用程序中需要一个重定向端点,一旦我通过身份验证,OAuth 提供的服务就可以重定向到该端点。
如何在单页应用程序中处理此问题?当然,重定向到 OAuth 提供的服务在这里并不好,甚至可能无法重定向回来。
我知道 OAuth 还支持基于用户名/密码的 token 生成。这与 AJAX 调用完美配合,但需要我的单页应用程序询问用户名和密码。
您通常如何处理这个问题?
最佳答案
大多数时候,即使对于 SPA,重定向也是可以的,因为用户不喜欢将他们的 X 服务凭证放在 X 之外的任何其他网站上。另一种方法是使用一个小的弹出窗口,您可以检查 Discourse做。恕我直言,重定向比弹出窗口更好。
Google 一些提供商支持 resource owner flow,这就是您所描述的发送用户名和密码,但这并不好。这些是我看到的问题:
OAuth 描述了一个名为 implicit flow 的客户端流。使用此流程,您不需要在服务器端进行任何交互,也不需要 client_secret。 OAuth 提供程序使用“#access_token=xx”重定向到您的应用程序。之所以称为隐式,是因为您不需要为每个访问 token 交换授权代码,而是直接获得 access_token。
Google 实现隐式流程,检查:Using OAuth2 for Client-Side apps 。
如果您想对某些不支持隐式流程的提供商(例如 Github)使用隐式流程,您可以使用身份验证代理,例如 Auth0 。
免责声明:我为 Auth0 工作。
关于oauth - 如何将 OAuth 与单页面应用程序集成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21451172/
我是一名优秀的程序员,十分优秀!