我试图从概念上和实际上理解如何使用Azure AD在我的web-api应用程序中使用openID-connect流执行oauth2.
重要的是,当向API发出请求时,我想知道谁发出了请求.
我目前的理解是: -
这对我来说是个黑暗的地方.
我究竟如何使用此令牌授权访问特定资源,确定谁正在访问资源,以及执行此操作的机制是什么?
我有点假设我需要重复使用令牌才能在Azure AD用户终端的呼叫 - 如果令牌确实有效,则AD端点将返回用户的详细信息 - 从而确定该令牌的一些手段是有效的,并提供有关用户身份的详细信息.授权访问资源可以通过Azure AD中的组成员身份来完成.
但......
我只能假设这是一个已解决的问题,并注意到按照这个例子使用OWIN中间件
https://github.com/AzureADSamples/WebApp-WebAPI-OpenIDConnect-DotNet
但我仍然不确定究竟发生了什么.
该服务使范围和权利要求书的记载,但我不明白的地方,这些都源于(我从客户端提供的令牌承担,但不知道).该服务必须在呼叫中接收身份信息.
这让我有两点意见,因为这是安全的 -
调用服务时提供的令牌需要在传输中保护(因此使用HTTPS) - 以防止MITM.
令牌需要签名一些 - 我猜通过使用客户端秘密或其他东西 - 来防止令牌中的信息被欺骗.
有人能帮助我清理这个混乱的混乱吗?
特别是 -
如何确定API调用者的身份 - 是通过客户端或服务器中的调用确定的身份?
如何根据用户角色限制对API的某些端点的访问?
通过构建可用的现有中间件和库,我该怎么做才能实现这一目标?