Azure active directory 基于OIDC的混合SPA客户端&x2B;OAuth服务器客户端场景?
我正试图规划最佳方式,以实现以下发展: 组成部分:Azure active directory 基于OIDC的混合SPA客户端&x2B;OAuth服务器客户端场景?,azure-active-directory,azure-ad-b2c,openid-connect,Azure Active Directory,Azure Ad B2c,Openid Connect,我正试图规划最佳方式,以实现以下发展: 组成部分: SPA客户机:与以下人员进行通信: 基于API的服务器:由同一组织开发 SPA和服务器都是第三方API的客户端,例如: AAD图形API 在上述情况下,以下各项是否正确: SPA使用OIDC隐式流登录到AAD,并返回两个令牌:token+id\u token SPA将这两个令牌保存在独立的存储中 SPA与后端服务器的API通信。 在授权标头中将令牌作为承载令牌传递 Q:在OAuth 2.0框架中,访问令牌不应在私人客户端之外共享,
- SPA客户机:与以下人员进行通信:
- 基于API的服务器:由同一组织开发
- AAD图形API
在上述情况下,以下各项是否正确:
- SPA使用OIDC隐式流登录到AAD,并返回两个令牌:
+token
id\u token
- SPA将这两个令牌保存在独立的存储中
- SPA与后端服务器的API通信。
- 在授权标头中将令牌作为承载令牌传递
- Q:在OAuth 2.0框架中,访问令牌不应在私人客户端之外共享,这是正确的吗?但在OIDC中,我们采取这种自由,因为SPA被视为同一系统的一个组件,只要我们不公开客户端id,就可以了
- Q:是否也将
id\u令牌传回?或者,最好将其保存在SPA端,因为服务器只需要从access_令牌的JWT获取用户id的
sub
- Q:如果发送,如何发送?!?如果授权标头已用于访问令牌
- Q:这让我很困惑:后端服务器如何知道用户的作用域?OAuth 20框架和OIDC协议都没有指定
属性是协议的一部分。一些操作(例如:AAD)不提供内省终点。肯定不仅仅是承认代币是不可侵犯的,不是吗scp
- Q:如果需要,后端服务器是否可以获得
id\u令牌(可能是为了获得用户的电子邮件地址)?
- Q:怎么做?是否通过执行/token请求,提供
,以获取令牌
,只要令牌未过期就可以李>id\u令牌
- Q:怎么做?是否通过执行/token请求,提供
- 需要连接到OAuth的SPA将为对AAD的调用请求一个单独的OAuth访问令牌。这些数据也将缓存在隔离存储中
- Q:如果Web服务要代表SPA的用户代理对AAD的请求,那么客户端必须首先确保(在SPA端)其第一个令牌已被授予额外的作用域——将AAD作用域添加到用于访问API服务器作用域的作用域中,这是否正确
- Q:如果API Web服务代表服务调用AAD,而不引用最终用户(例如:webjob,或在最终用户登录之前),那么调用将必须使用客户端凭据流? 在上述情况下,SPA和API服务器之间不会使用cookie。这是一种最佳方法吗
隐式流意味着令牌将过期…并且将无法刷新或“记住我”。SPA是否曾调用执行授权代码授予流的Web服务器页面,然后将身份验证令牌返回给服务器?这样,分布式客户端的两半都有相同的
令牌
s
如果有的话…有什么例子吗?!线索
- Q:我一直难以理解的一个问题是:在windows中,声明显示了用户拥有的范围。它如何使用这些信息在缓存中找到正确的令牌?或者只是不相关——它使用“访问群体”属性在目标客户机上查找该用户的唯一缓存,并附加该缓存
非常(非常!*)感谢您对上述内容的所有更正/建议
*10年来,我从未像OIDC/OAuth RFCs那样被协议/框架弄得如此慌乱 对于AAD,其他IDP可以以不同的方式处理问题 问:在OAuth 2.0框架中,它声明访问令牌不应在私有客户端之外共享,这是正确的——但在OIDC中,我们采取这种自由,因为SPA被视为同一系统的一个组件,只要我们不公开客户端id,这就可以了 我不确定是否符合官方规范,但使用访问令牌从SPA/本机客户端访问后端API是非常典型的。 客户端id是相当公开的信息,任何人都可以从您的身份验证重定向URL中找到它 问:是否也将id_令牌传递回?或者,最好将其保存在SPA端,因为服务器只需要从access_令牌的JWT获取用户id的子对象 通常不会,id令牌是用于前端的 这让我感到困惑:后端服务器如何知道用户拥有哪些作用域?OAuth 20框架和OIDC协议都没有指定scp属性是协议的一部分。一些操作(例如:AAD)不提供内省终点。肯定不仅仅是承认代币是不可侵犯的,不是吗 您可以使用如下AAD在API中实现自定义角色:。 然后可以将这些角色分配给用户。 然后,访问令牌将具有这些角色。 通过使用AAD验证签名+受众+到期时间+颁发者来检查令牌有效性 如果需要,后端服务器是否可以获得id_令牌(可能是为了获得用户的电子邮件地址) 如果是AAD,则不会。id令牌仅在用户身份验证后提供。 使用AAD,您可以调用Microsoft Graph API以获取有关用户的更多信息 问:如果Web服务要代表SPA的用户代理对AAD的请求,那么客户端必须首先确保(在SPA方面)它的第一个令牌已被授予额外的作用域——将AAD作用域添加到它用来访问API服务器作用域的作用域中,这对吗 <