我正在开发一个由 C# WebAPI(在 Azure 网站上)和本机移动应用程序组成的应用程序。本质上,客户端使用 Web 界面创建一系列消息,并且可以在移动应用程序上浏览这些消息。目前,对这些数据没有限制。
一项新功能要求某些客户可以保护他们的数据,因此只允许授权人员访问。我们不想使用用户名/密码,因为开销太大。我们的客户可能有成百上千的人想要浏览他们的消息。
我的方法是:
- 用户使用我们的门户网站创建服务。
- 用户将公钥上传到我们存储的此服务中。
- 用户使用 MDM 将相应的私钥分发给希望浏览消息的所有设备。
- 对这些消息的 HTTP 请求需要提供证书。
- API 使用公钥验证请求。
有两件事困扰着我。
我们不会使用 CA 来验证证书链。客户的证书可以是自签名的。我不认为这是一个大问题,因为我们知道我们的客户是谁。
将私钥分布在许多设备上可能被认为是一件坏事,尽管我相信这种情况很常见,例如对 MS Exchange 进行身份验证。保护私钥的责任将由客户承担。
所以,我的问题是:这种方法看起来合理吗?
此外,Azure 网站仅支持客户端证书的开/关配置,因此无法混合公共和私人调用。是否有两个端点正在考虑良好的做法,例如
它需要应用程序中的智能来知道去哪里,但这会使应用程序的配置更加容易,因为它们要么拥有客户端证书,要么没有。
我的额外问题:使用两个端点是一种常见的做法吗?