我是Web服务的新手,正在使用.NET Web API 2创建HTTP服务。
服务的消费者将是其他应用程序,但将来我预见到使用它们的Web应用程序(浏览器,移动应用程序)。这些服务只是向消费者提供数据(没有创建/更新/删除)。
所有应用程序(包括 API)都位于我们的企业内部网上。没有朝外的。
我被告知要对服务使用集成的 Windows 身份验证。是否可以在同一服务上使用 API 密钥来验证进行调用的应用程序?
我什至不确定这样做是否有意义。使用应用程序(即在服务器上运行的可执行文件)是否可以发送帐户信息?我的想法是Windows身份验证不是必需的,令牌身份验证就足够了。其他人告诉我同时使用两者。我不确定这是否可能,也没有找到任何显示它的东西。
API 密钥是传递给服务接口的参数,因此可以在后端使用任何类型的身份验证进行传递。
但通常,API 密钥用于确定是否允许用户使用特定的 API。例如,如果只允许具有 Windows 帐户的用户子集使用 api,那么这可能有意义,因为即使他们可以使用其 Windows 帐户进行身份验证,他们仍然可以通过未传递有效的身份验证密钥来确定他们未经授权。
也就是说,您也可以使用某种策略执行相同的操作,例如,检查用户是否具有调用 api 方法的正确角色。当您让人们通过互联网访问 API 时,这更有意义。