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

Asp.net web api Azure api管理身份验证链接到web api,asp.net-web-api,azure-api-management,Asp.net Web Api,Azure Api Management,我们当前的API使用seesionID进行身份验证。我们计划使用Azure API管理来管理我们的web API。但是,Azure web api管理有自己的身份验证。我们如何将这两者联系在一起。我们的客户可以使用相同的登录信息。有关Azure API管理中的身份验证和标识的对话可能会变得棘手,因为可能有三种不同的标识,然后运行时请求和管理请求的上下文也不同。所以,为了确保我回答了正确的问题,让我尝试定义一些术语 三个身份: API提供程序:这是创建API管理实例的Azure用户 API消费者

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

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

三个身份:

  • API提供程序:这是创建API管理实例的Azure用户
  • API消费者:这是一名开发人员,他正在编写一些客户端软件来使用API
  • 最终用户:API使用者编写的应用程序的用户,将是实际向API发起运行时请求的用户
我假设您是API提供者。我不确定的是,您的客户是API消费者还是最终用户

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

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

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

尽管Azure API管理提供API消费者的身份服务,但它并未为最终用户提供完整的身份管理。我们将此留给外部合作伙伴,如Azure AD、Thinktecture Identity Server和Auth0。我假设您现有的系统已经在使用某种身份提供者来生成sessionId。使用Azure API管理,您可以使用API管理网关中的策略验证sessionId。为此,我们需要更多地了解sessionId的格式

很抱歉,这篇文章太长了,但这是一个令人困惑的话题,我想尽可能地说清楚