Azure api管理身份验证链接到web api

时间:2018-02-14 23:18:14

标签: asp.net-web-api azure-api-management

我们当前的API使用seesionID进行身份验证。我们计划使用Azure API管理来管理我们的Web API。但Azure web api管理有自己的身份验证。我们如何将这两者联系在一起。我们的客户可以使用相同的登录信息。

1 个答案:

答案 0 :(得分:1)

Azure API Management中有关身份验证和身份的对话可能会变得棘手,因为可能存在三种不同的身份,然后存在运行时请求与管理请求的不同上下文。所以,为了确保我正在回答正确的问题,让我尝试定义一些术语。

三个身份:

  • API提供程序:这是创建API管理实例的Azure用户。
  • API使用者:这是一位开发人员正在编写一些客户端软件来使用API​​。
  • 最终用户:API Consumer编写的应用程序用户,实际上是向API发起运行时请求的用户。

我假设您是API提供商。我不确定的是您的客户是API消费者还是最终用户。

Azure API Management为API使用者提供身份服务。消费者可以手动创建用户名/密码帐户,也可以使用某个社交身份提供商创建帐户。然后,他们可以获得订阅密钥,以允许Azure API Management将请求与API使用者相关联。

我认为您在询问是否可以将用于识别最终用户的sessionID连接到用于识别API使用者的订阅密钥。如果这是正确的,那么答案是否定的(除了下面描述的场景),因为我们需要在运行任何策略之前识别API使用者密钥,以确保我们运行正确的策略。

可以更改我们的Api Consumer订阅密钥。因此,如果您的客户/最终用户数量较少,则可以为每个最终用户创建Api Consumer帐户。但是,如果sessionID是常量值,则只能将sessionID映射到API使用者订阅密钥。我假设根据名称,每次登录时该值都会发生变化。

虽然Azure API Management 提供API使用者的身份服务,但不为最终用户提供完整的身份管理。我们将其留给Azure AD,Thinktecture Identity Server和Auth0等外部合作伙伴。我假设您现有的系统已经使用某种身份提供程序来生成sessionId。您可以使用Azure API Management执行的操作使用API​​ Management Gateway中的策略验证sessionId 。为此,我们需要了解更多有关sessionId格式的信息。

对于长篇文章感到抱歉,但这是一个令人困惑的主题,我希望尽可能清楚。