如何在最终用户无法使用Azure AD帐户登录的情况下保护API?

时间:2019-01-04 03:09:47

标签: oauth-2.0 azure-active-directory azure-api-management

我想知道如何(或如果可能)利用OAuth使用Azure API管理服务,而无需用户注册Azure AD帐户并使用后端API

我遵循了示例https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-protect-backend-with-aad,一切正常。

此示例使用Azure开发人员控制台作为客户端应用程序。但是,如果我想使用自己的客户端应用程序进行身份验证,是否意味着我的客户端应用程序需要托管在具有OAuth功能的服务器下?

我的客户端应用程序是否可以使用“服务帐户”作为用户登录到Azure Active Directory,以便客户端应用程序可以使用受保护的API?

1 个答案:

答案 0 :(得分:0)

APIM本身并不关心任何给定的OAuth服务器是否为AAD。 APIM中与OAuth有关的三件事。

首先是Dev门户登录。可以设置开发者门户以通过AAD,Facebook,Google e.t.c对用户进行身份验证。使用此设置,APIM将联系所需的身份验证服务器以验证用户身份。仅当您希望您的用户使用某些身份验证服务器通过开发门户进行身份验证时,才需要这样做。

然后进行OpenID和OAuth服务器注册,并将它们链接到API。这纯粹是出于文档目的。您这样做是为了表明您的后端(不是APIM)需要来自某个OAuth服务器的Oauth令牌。开发门户的一部分将在开发控制台中呈现UI,以获取此类令牌并调用APIM代理。可以与任何OpenId / OAuth服务器一起使用,而不必使用AAD。而且您不需要托管任何应用程序,只需完成注册即可获取客户端ID和客户端机密,因此,当Dev Portal调用auth服务器以获取用户令牌时,便可以这样做。仅需要在开发者控制台上呈现UI,这将允许用户轻松获取令牌来调用您的服务。不会以任何方式影响运行时请求的处理。

最后,有validate-jwt策略,这是APIM中唯一与OAuth相关的运行时位。可以将该策略配置为从请求中提取JWT令牌,并检查它的某些声明以决定主叫方是否被授权进行呼叫。这不需要任何其他设置即可工作,只需将策略放在管道中就足够了。但是您可能还需要设置身份验证服务器,因为没有它,默认情况下,开发控制台将无法正常工作。