我有一个用node.js express框架编写的后端API。我需要使用它来实现oAuth 2.0(client_credentials授予类型)。我知道前端(谁是API的调用者)正在使用client_id和client_secret请求https://login.microsoftonline.com/IDENTIFIER_STRING/oauth2/token并获得访问令牌作为响应。之后,FE会将请求发送到带有该访问令牌的带有Authorization标头的API。现在我的问题是如何验证访问令牌并将访问权限授予请求者?我是否必须借助一些公共密钥和一些node.js库将它作为JWT脱机验证?还是我必须通过将访问令牌发送到与令牌端点类似的oAuth提供程序的某个端点来在线进行操作?
答案 0 :(得分:0)
作为令牌使用者,除非发行人另行指定,否则验证是离线进行的。
您应该使用JWT库,不要滚动自己的验证逻辑,正确实现它并不容易。
将MSAL用于Azure ADv2应用程序-
https://github.com/AzureAD/microsoft-authentication-library-for-js
https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics
对于v1,请使用较旧的ADAL-
https://github.com/AzureAD/azure-activedirectory-library-for-js
v1 vs v2端点-
https://docs.microsoft.com/en-us/azure/active-directory/develop/azure-ad-endpoint-comparison
Azure AD符合OAuth 2.0和OpenID Connect。这确实意味着您还应该能够通过第三方库验证JWT。