有关受Azure OAuth 2.0保护的api的实际问题

时间:2018-07-11 09:52:50

标签: azure oauth-2.0

我们正在提供受Azure OAuth 2.0保护的网络api。 我们的从属将使用此api,并且他们每个人都会获得一个clientid / client。

1)在linked场景中。为什么需要刷新令牌?    如果令牌过期,他们的(Web)应用程序将仅使用其clientid和sclient secret发送新令牌?

2) 我们有100多个会员。几乎所有这些用户都有相同的权限,但是我们仍然希望为每个人提供唯一的clientid / secret。我们实际上如何做到这一点?是唯一的在Azure Web门户中手动操作的方法吗?

Azure Oauth - how to change token expiration time?

1 个答案:

答案 0 :(得分:1)

  

1)在链接方案中。为什么需要刷新令牌?如果令牌过期,他们的(Web)应用程序将只使用其clientid和sclient secret发送新令牌吗?

如果客户端对您的API进行委托调用,则使用刷新令牌。 在这种情况下,令牌还将包含当前登录用户的信息。 当访问令牌过期时,客户端可以使用刷新令牌为您的API获取针对特定用户的API的新访问令牌(而不是重定向他们以再次登录以获取授权码等)。

如果他们仅使用客户端凭据(id + secret)来调用您的API,那么将没有刷新令牌。

  

2)我们有100多个会员。几乎所有这些用户都有相同的权限,但是我们仍然希望为每个人提供唯一的clientid / secret。我们实际上如何做到这一点?是唯一的在Azure Web门户中手动操作的方法吗?

要获得每个会员的唯一客户ID,您必须为每个会员创建一个新的应用程序注册。 您可以通过以下一种Graph API(Azure AD Graph或MS Graph)创建应用程序和服务主体来自动执行此过程:

请注意,应用程序的MS Graph端点仍处于beta版本,不建议用于生产环境。 这是支持Azure AD Graph API的少数情况之一。

您将需要为每个会员创建一个应用程序(记住还要创建passwordCredential(秘密)), 然后根据应用程序创建服务主体, 然后向您的API授予服务主体权限。 如果这些是应用程序权限,则必须创建appRoleAssignments。