首先,我没有使用API管理。我只有一个API的.NET核心应用程序托管在Azure中。现在,我想使用不记名令牌(OAuth)保护应用程序。出于某些原因,我可以打开和关闭身份验证/授权,但当这样做时,对API的调用会将我重定向到Chrome的reflight中的登录页面。
所以我的网站托管在www.a.com上,API端点在www.b.com (azure托管网站)上提供服务。Chrome正在发布api应用程序的预检,azure以重定向作为回应。
我的设置实际上非常简单和标准。我有一个作为静态网站托管的VueJS前端,它使用azure AD进行登录。成功登录后,我还想调用托管在azure中的API。这个API必须是安全的。不知何故,我似乎不能让这个相当简单的配置工作。
我已经在azure中注册了应用程序,我已经创建了作用域,并为API应用程序中定义的作用域给了vuejs webclient管理员同意,但我似乎不能从webclient使用accesstoken从API应用程序调用API。
有人在外面求救吗?
问候和感谢
约翰。
发布于 2019-12-17 16:58:48
您可以使用iframe将JWT身份验证令牌存储在连接到主页的中间域的cookie / localStorage中。
1.要在example1.com中对用户进行身份验证,请将用户重定向到sso.example.com中的身份验证服务器,在身份验证后发出JWT,并将其存储在该域的localStorage中。之后,将用户重定向到源域example1.com。
2.在example2.com中创建一个指向sso.example.com的iframe。sso.example.com中的iframe读取JWT令牌并向父页面发送一条消息
3.父页面接收消息并获得附加的令牌,继续执行SSO流。
为了简化开发,我们最近在https://github.com/Aralink/ssojwt上发布了使用JWT的跨域单点登录
有关更多详细信息,请参阅此article。
https://stackoverflow.com/questions/59321895
复制相似问题