我们当前的API使用seesionID进行身份验证。我们计划使用Azure API管理来管理我们的Web API。但Azure web api管理有自己的身份验证。我们如何将这两者联系在一起。我们的客户可以使用相同的登录信息。
答案 0 :(得分:1)
Azure API Management中有关身份验证和身份的对话可能会变得棘手,因为可能存在三种不同的身份,然后存在运行时请求与管理请求的不同上下文。所以,为了确保我正在回答正确的问题,让我尝试定义一些术语。
三个身份:
我假设您是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格式的信息。
对于长篇文章感到抱歉,但这是一个令人困惑的主题,我希望尽可能清楚。