是否可以只从AAD获取id_token?我有一个非常简单的情况,我的角度应用程序需要有用户的用户名,我的api层是敞开的。
我想我可以将我的clientid和资源设置为AAD中我的角度应用程序的clientId,但我得到了:
" AADSTS65005资源无效。客户已请求访问 资源未在请求的权限中列出 客户申请注册"
这是在隐式授权流程中。
--- EDIT
例如,如果我发送此初始重定向以启动隐式授权:
https://login.microsoftonline.com/{{MY-TENANT-HERE}}/oauth2/authorize?response_type={{id_token}}&client_id={{CLIENTID-HERE}}&state={{STATE-HERE}}&redirect_uri={{REDIRECTURI-HERE}}&scope={{openid profile email}}&nonce={{nonce-here}}&resource={{CLIENTID-HERE}}
产生这个:
" AADSTS65005资源无效。客户已请求访问 资源未在请求的权限中列出 客户申请注册"
如果我没有发送资源(IE以下请求):
https://login.microsoftonline.com/{{MY-TENANT-HERE}}/oauth2/authorize?response_type={{id_token}}&client_id={{CLIENTID-HERE}}&state={{STATE-HERE}}&redirect_uri={{REDIRECTURI-HERE}}&scope{{openid profile email}}&nonce={{nonce-here}}
我收到一条消息,说明需要资源。所以我的问题是,我说没有后端,但我的前端需要知道用户是谁,AAD如何支持?
答案 0 :(得分:1)
出现此问题的原因是您的角度应用程序可能未在Azure AD中注册,或者可能未应用正确的权限。
如果您尚未在Azure门户网站中的正确租户下尝试为Angular应用创建新的应用注册。使用访问令牌或ID令牌是访问用户配置文件的正确方法。
https://developer.microsoft.com/en-us/graph/docs/concepts/auth_overview