我在Azure上有一个linux Web应用程序(fastAPI),目前具有以下职责
- 提供S单个P年龄A应用程序(SPA)
- 是后端的反向代理
对于这个API,我使用built-in authentication feature "Easy Auth"。
我现在做的是以下流程:
- 用户请求SPA ->被重定向到身份提供商->验证自己,获得注入到其浏览器中的cookie,并通过AAD应用程序中设置的回调URL重定向到Web应用程序并获得SPA代码
- SPA然后使用注入的cookie(HTTP cookie)对受保护的API发出请求
因为SPA不使用auth令牌(承载令牌)调用API,所以我想用服务器(API)上的auth令牌交换cookie。为此,API使用请求中的cookie来调用 /.auth/me 端点(blob存储令牌存储)以获取有关用户的更多信息,从中可以提取id_token
或access_token
。
从这里,我注意到id_token
可用于通过EasyAuth调用受同一Azure AD应用程序保护的另一个API。
但是,id_token
有时会过期,调用/.auth/refresh
只会刷新access_token
。
问题:
一般问题:为什么可以使用id_token
访问下游API。我以为这是access_token
的工作?.
编辑:Turns out that:
Azure AD中的OAuth 2.0隐式流旨在当请求令牌的资源与客户端应用程序相同时返回ID令牌。
实际问题:有没有一种方法可以同时刷新id_token
,而无需用户重新进行身份验证?类似于调用/.auth/refresh端点?或者什么才是正确的方法?还是我做的事情完全错误,SPA应该只获得一个auth令牌,然后对API发出请求?
类似问题:
1条答案
按热度按时间ojsjcaue1#
我创建了一个Azure AD SPA应用程序,如下所示:
x1c 0d1x的数据
示例中,我使用隐式流生成了ID token:
字符串
的
是的,你是对的@*Johannes施密特 *,当一个资源的令牌与客户端应用程序相同时,Azure AD中的OAuth 2.0隐式流旨在返回一个ID令牌。要生成访问令牌,请修改
&response_type=token
。参考号:
作者:Imran Arshad