我正在组合提供RESTful API的Web服务。我已经构建了一个使用 PublicClientApplication 的UWP客户端,并且效果很好。现在,我正在构建一个Web应用程序,以使用相同的服务,并且我发现的示例使用 ConfidentialClientApplication 来获取用户的访问令牌。那么,这两个似乎都产生访问令牌的类之间有什么区别(文档对不存在的访问量很小),以及to类之间的用例是什么。
答案 0 :(得分:3)
我自己查看MSAL时,设法找到了MSAL.net的一些文档,其中包括有关客户端应用程序的chapter。
它明确讨论了机密客户端应用程序类和公共客户端应用程序类之间的区别。
机密客户
机密客户端应用程序通常是在服务器上运行的应用程序(Web 应用,Web API甚至服务/守护程序。他们是 被认为难以访问,因此能够保持 应用秘密。机密客户能够持有 配置时间的秘密。客户端的每个实例都有一个不同的 配置(包括clientId和secret)。这些值是 最终用户难以提取。网络应用是最常见的 机密客户。 clientId通过网络浏览器公开, 但机密仅在反向通道中传递,绝不直接传递 暴露的。
公共客户端
相反,公共客户端应用程序通常是应用程序 可以在设备(例如电话)或台式机上运行。他们 不被信任以安全地保留应用程序的机密,因此 仅以用户的名义访问Web API(它们仅支持public 客户流量)。公共客户端无法保留配置时间 机密,因此没有客户机密