.net core 机密客户端应用程序和公共客户端应用程序之间有什么区别?

.net core 机密客户端应用程序和公共客户端应用程序之间有什么区别?,.net-core,msal,.net Core,Msal,我正在构建一个提供RESTful API的web服务。我已经构建了一个UWP客户端,它使用了一个PublicClientApplication,并且工作得非常好。现在,我正在构建一个Web应用程序来与相同的服务对话,我发现的示例使用机密客户端应用程序为用户获取访问令牌。那么,这两个似乎都产生访问令牌的类之间有什么区别(文档很轻,甚至不存在)以及to类之间的用例是什么。当我自己查看MSAL时,我设法找到了一些包含关于客户端应用程序的文档 它明确地讨论了机密客户端应用程序类和公共客户端应用程序类之间

我正在构建一个提供RESTful API的web服务。我已经构建了一个UWP客户端,它使用了一个PublicClientApplication,并且工作得非常好。现在,我正在构建一个Web应用程序来与相同的服务对话,我发现的示例使用机密客户端应用程序为用户获取访问令牌。那么,这两个似乎都产生访问令牌的类之间有什么区别(文档很轻,甚至不存在)以及to类之间的用例是什么。

当我自己查看MSAL时,我设法找到了一些包含关于客户端应用程序的文档

它明确地讨论了机密客户端应用程序类公共客户端应用程序类之间的区别

机密客户

机密客户端应用程序通常是在服务器(Web)上运行的应用程序 应用程序、Web API,甚至服务/守护程序应用程序)。他们是 被认为难以访问,因此能够保持 应用程序机密。机密客户能够持有 配置时间机密。客户机的每个实例都有一个不同的 配置(包括clientId和secret)。这些值是 最终用户难以提取。web应用程序是最常见的 机密客户。clientId通过web浏览器公开, 但是这个秘密只在后台传递,从不直接传递 暴露的

公共客户端

相反,公共客户端应用程序通常是应用程序 在设备(例如电话)或台式机上运行。他们 不受信任可以安全地保守应用程序机密,因此 仅以用户的名义访问Web API(它们仅支持公共 客户端流)。公用客户端无法保留配置时间 机密,因此没有客户机密