Java 如何使用ADAL JS发布的隐式授权令牌从Web API访问Graph API
我有一个内置于Java的Web API,可以将数据库信息返回给SPA。在发送响应之前,我需要使用AAD Graph API检查用户的组信息。现在Web API接受请求并读取用户的令牌(eyJ…) 应用程序准备好代表用户向Graph API发送请求的下一步是什么Java 如何使用ADAL JS发布的隐式授权令牌从Web API访问Graph API,java,api,authentication,azure-active-directory,Java,Api,Authentication,Azure Active Directory,我有一个内置于Java的Web API,可以将数据库信息返回给SPA。在发送响应之前,我需要使用AAD Graph API检查用户的组信息。现在Web API接受请求并读取用户的令牌(eyJ…) 应用程序准备好代表用户向Graph API发送请求的下一步是什么 我已尝试发送授权请求:持有人ey。。。标头使用用户的令牌,但收到身份验证错误。我还尝试了对应用程序清单的各种编辑和委派权限,但没有成功。您的API收到的访问令牌仅用于您的API。您需要的是代表当前用户为Azure AD Graph API
我已尝试发送授权请求:持有人ey。。。标头使用用户的令牌,但收到身份验证错误。我还尝试了对应用程序清单的各种编辑和委派权限,但没有成功。您的API收到的访问令牌仅用于您的API。您需要的是代表当前用户为Azure AD Graph API获取一个新的访问令牌 幸运的是,这正是代表流的目的。发件人: 代表规范草案使用OAuth 2.0的委托用户标识 下面讨论的流程假设用户已在另一个应用程序(如本机应用程序)上进行了身份验证,并且他们的用户身份已用于获取对第一层web API的访问令牌
https://login.microsoftonline.com/{租户id}/oauth2/token
正文中有以下参数(为了可读性,未编码,实际上这些参数是application/x-www-form-urlencoded
):
grant\u type=urn:ietf:params:oauth:grant type:jwt承载&
请求的\u令牌\u使用=代表\u&
断言={access token}&
客户端_id={api客户端id}&
client_secret={api client secret}&
资源=https://graph.windows.net&
scope=openid
其中,{tenant id}
是目录标识符(域名或Guid值),{access token}
是SPA提供给API的访问令牌(您正在交换图形API的访问令牌),{API client id}
是API的客户端id,{API client secret}
是API的秘密密码凭证
(注意,为简单起见,本例使用密码凭据(
client\u secret
)对API进行身份验证,但很可能使用由客户端证书签名的断言。)我刚刚添加了一个编辑,其中包含一个示例,说明如何创建令牌请求,将API的访问令牌交换为Graph API的新访问令牌。我真的需要这个答案。我对某些事情应该如何运作有着可怕的误解!