小编Mat*_*ler的帖子

使用Oauth2/OpenID连接构建Web-API

我试图从概念上和实际上理解如何使用Azure AD在我的web-api应用程序中使用openID-connect流执行oauth2.

重要的是,当向API发出请求时,我想知道发出了请求.

我目前的理解是: -

  1. 我的客户端会检测到用户未登录并重定向到登录.
  2. 用户将提供其凭据,并将其重定向回客户端以及oauth2令牌.
  3. 对于任何请求,此令牌将提供给web-api端点.

这对我来说是个黑暗的地方.

我究竟如何使用此令牌授权访问特定资源,确定谁正在访问资源,以及执行此操作的机制是什么?

我有点假设我需要重复使用令牌才能在Azure AD用户终端的呼叫 - 如果令牌确实有效,则AD端点将返回用户的详细信息 - 从而确定该令牌的一些手段是有效的,并提供有关用户身份的详细信息.授权访问资源可以通过Azure AD中的组成员身份来完成.

但......

我只能假设这是一个已解决的问题,并注意到按照这个例子使用OWIN中间件

https://github.com/AzureADSamples/WebApp-WebAPI-OpenIDConnect-DotNet

但我仍然不确定究竟发生了什么.

该服务使范围和权利要求书的记载,但我不明白的地方,这些都源于(我从客户端提供的令牌承担,但不知道).该服务必须在呼叫中接收身份信息.

这让我有两点意见,因为这是安全的 -

  1. 调用服务时提供的令牌需要在传输中保护(因此使用HTTPS) - 以防止MITM.

  2. 令牌需要签名一些 - 我猜通过使用客户端秘密或其他东西 - 来防止令牌中的信息被欺骗.

有人能帮助我清理这个混乱的混乱吗?

特别是 -

  1. 如何确定API调用者的身份 - 是通过客户端或服务器中的调用确定的身份?

  2. 如何根据用户角色限制对API的某些端点的访问?

  3. 通过构建可用的现有中间件和库,我该怎么做才能实现这一目标?

azure oauth-2.0 owin asp.net-web-api2 openid-connect

6
推荐指数
1
解决办法
5185
查看次数