Oauth 外部API';正在调用受Azure Active Directory保护的我的API

Oauth 外部API';正在调用受Azure Active Directory保护的我的API,oauth,azure-active-directory,openid-connect,Oauth,Azure Active Directory,Openid Connect,如果我有一个受Azure Active Directory保护的API,那么当外部API想要与我的内部API对话时,流程是什么 这只是一个普通的API到API的调用,还是一个特殊情况,需要以不同的方式处理?是为登录用户到Web服务而完成的 使用OAuth为用户提供对其数据的访问权限,同时保护其帐户凭据 由于另一个Web服务想要使用您的一个服务,所以最好的方法是使用另一个身份验证方法来授权 其他API,我假设您谈论的是机器,而不是用户(别名humans)。 所以,最好的方法是提供另一种身份验证机制

如果我有一个受Azure Active Directory保护的API,那么当外部API想要与我的内部API对话时,流程是什么

这只是一个普通的API到API的调用,还是一个特殊情况,需要以不同的方式处理?

是为登录用户到Web服务而完成的

使用OAuth为用户提供对其数据的访问权限,同时保护其帐户凭据

由于另一个Web服务想要使用您的一个服务,所以最好的方法是使用另一个身份验证方法来授权

其他API,我假设您谈论的是机器,而不是用户(别名humans)。 所以,最好的方法是提供另一种身份验证机制,以便授权机器以安全的方式连接到您的API。 进行机器连接的一种简单方法是使用带有公钥/私钥的私钥。
PKI的一个很好的参考资料:

这只是一个普通的API到API调用,还是一种特殊情况,需要以不同的方式处理?

特殊情况可能取决于这些api提供的资源的机密性以及应用程序所需的安全级别。最后,它只是一个api到api的调用

如果Azure Active Directory(AAD)是整个应用程序的身份提供者,则可以使用两种方法

AAD提供的具有OAuth 2.0客户端凭据授权的应用程序标识。调用API向AAD令牌端点发出请求,请求其客户端id、客户端机密(凭据)和应用程序id(被调用API的唯一id),以接收访问令牌作为响应。此令牌用作承载令牌以调用下游API。在这种方法中,交换为访问令牌的客户机id、客户机机密和应用程序id是静态值。有权访问这些值的人可能会找到一种危害应用程序安全的方法(可能性很小)

第二种方法是使用OAuth 2.0委派用户标识。向AAD令牌端点发出请求,请求中包含客户端id、客户端机密、作为调用tier1 API的一部分接收的访问令牌以及一个特殊的代表参数,以接收访问令牌、刷新令牌作为响应。我们更喜欢这种方法,因为它使用动态值(来自Tier1API的访问令牌)并提供刷新令牌

您可以阅读更多关于这些方法的信息

如果您不想使用AAD,可以使用asp.net内置的OwinAuthenticationMiddleware来生成和验证您自己的访问令牌。如前所述,这完全取决于您的应用程序需求和实现细节,但最终它是一个API到API的调用

希望这是有帮助的,请让我知道如果你有任何问题

谢谢,, 索马