Microsoft身份验证库(MSAL)定义了两种类型的客户端- 公共客户端 和 机密客户端。 这两种客户端的区分方式是,能否在授权服务器上安全地完成身份验证,以及能否维持客户端凭据的保密性。
- “机密客户端”应用程序是在服务器上运行的应用(如 Web 应用、Web API 应用,或者服务/守护程序应用)。 其内部结构被认为很难访问,因此它们可以保证应用程序机密的安全性,并让用户无法察觉。 机密客户端可以保存配置时机密。 客户端的每个实例采用不同的配置(包括客户端 ID 和客户端机密)。 Web 应用是最常见的机密客户端。 客户端 ID 通过 Web 浏览器公开,但机密仅通过后端传递,并且永远不会直接公开。
- 公共客户端应用程序 是在使用者设备、台式计算机或 Web 浏览器中运行的应用。 他们不信任安全地保留应用程序机密,因为客户端应用程序可由其用户进行反向工程或检查,因此他们仅代表用户访问 Web API。 它们也只支持公共客户端流。
客户端类型的比较
下面是公共客户端和机密客户端应用之间的一些相似之处和差异:
- 这两种类型的应用都维护用户令牌缓存,并且可以无提示获取令牌(令牌缓存中时)。 机密客户端应用还为应用本身的令牌提供应用令牌缓存。 在 令牌缓存序列化 指南中详细了解不同的令牌缓存类型。
- 这两种类型的应用都管理用户帐户,并且可以从用户令牌缓存中获取帐户、基于其标识符获取帐户或删除帐户。
在 MSAL 中,客户端 ID(也称为 应用程序 ID 或 应用 ID)在应用程序初始化期间使用。 当应用获取令牌时,不再需要传递此 ID。 公共和机密客户端应用都是如此。 机密客户端应用的构造函数也传递了客户端凭据:它们与标识提供者共享的机密,可以是密钥(表示为字符串)或证书。
Next steps
有关应用程序配置和实例化的详细信息,请参阅: