带有 mvc 应用程序的 Identity Server 3 隐式授权
Identity Server 3 implicit grant with mvc application
根据 openid 规范:隐式授权适用于 javascript 和移动应用程序,与授权代码授权相比,它的安全性较低。换一种说法;据我了解,不建议将其用于基于服务器的应用程序(如 aspnet mvc)。
The Implicit Flow is mainly used by Clients implemented in a browser
using a scripting language
但是,我看到了一些在 mvc 应用程序中使用隐式授权的示例(例如:https://github.com/IdentityServer/IdentityServer3.Samples/tree/master/source/MVC%20Authentication/EmbeddedMvc)。所以我很困惑。
对 mvc 应用程序尤其是 sso 目的使用隐式授权是否正确(安全)?
如果没有;是否有用于 mvc 客户端应用程序的 owin 中间件来处理授权代码流?
视情况而定。如果您所做的只是身份验证,那么隐式就可以了。如果您还获取访问令牌,则隐式将这些令牌公开给浏览器和用户。因此,如果您计划在您的 JS 中使用该访问令牌,那么不用担心——API 已经被设计为可以直接从浏览器访问。但是,如果您希望您的 API 无法从浏览器访问,那么混合流将阻止访问令牌对浏览器、JS 和用户可见。
根据 openid 规范:隐式授权适用于 javascript 和移动应用程序,与授权代码授权相比,它的安全性较低。换一种说法;据我了解,不建议将其用于基于服务器的应用程序(如 aspnet mvc)。
The Implicit Flow is mainly used by Clients implemented in a browser using a scripting language
但是,我看到了一些在 mvc 应用程序中使用隐式授权的示例(例如:https://github.com/IdentityServer/IdentityServer3.Samples/tree/master/source/MVC%20Authentication/EmbeddedMvc)。所以我很困惑。
对 mvc 应用程序尤其是 sso 目的使用隐式授权是否正确(安全)?
如果没有;是否有用于 mvc 客户端应用程序的 owin 中间件来处理授权代码流?
视情况而定。如果您所做的只是身份验证,那么隐式就可以了。如果您还获取访问令牌,则隐式将这些令牌公开给浏览器和用户。因此,如果您计划在您的 JS 中使用该访问令牌,那么不用担心——API 已经被设计为可以直接从浏览器访问。但是,如果您希望您的 API 无法从浏览器访问,那么混合流将阻止访问令牌对浏览器、JS 和用户可见。