2016-04-21 62 views

回答

3

这只是一个API的API调用正常或这是一个特殊的情况下,需要处理不同的方式?

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

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

AAD提供的具有OAuth 2.0客户端凭据授权的应用程序标识。调用API使用其客户端ID,客户端密钥(凭证)和应用程序ID(被调用程序API的唯一ID)向AAD令牌端点发出请求,以接收访问令牌作为响应。该令牌用作不记名令牌来调用下游API。在这种方法中,为访问令牌交换的客户端ID,客户端秘密,应用程序ID是静态值。有人能够访问这些值可能会发现一种危害应用程序安全性的方式(极不可能)。

第二种方法是使用OAuth 2.0的委托用户身份。向AAD令牌终端发出请求,其中包含客户端ID,客户端密钥,作为调用tier1 API的一部分接收的访问令牌以及用于接收访问令牌的特殊on_behalf_of参数,将令牌刷新为响应。我们更喜欢这种方法,因为它使用动态值(来自tier1 api的访问令牌),并且还提供了一个刷新令牌。

你可以阅读更多有关这些方法here

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

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

谢谢, Soma。

0

oAuth已完成对登录用户到web服务(see also reference here)

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

作为另一个Web服务要消耗你的服务的一个这样做的最好的办法是有另一种身份验证方法,以便授权

其他API,我假设你正在谈论的机器,而不是用户(别名人类)。 所以最好的方法是提供另一个认证机制,以授权机器以安全的方式连接到您的API。 执行机器连接的简单方法是使用公钥/私钥私钥PKI。 PKI的一个很好的参考:http://docs.oracle.com/javase/6/docs/technotes/guides/security/certpath/CertPathProgGuide.html