如何通过Postman从Azure AD获取用户的lastSignInDateTime
如何用Postman从Azure AD获取用户lastSignInDateTime信息
要获取用户的lastSignInDateTime,你需要通过Microsoft Graph API的signInActivity属性来实现,下面是具体步骤和问题排查方案:
1. 确认必要前提
- 权限要求:必须为你的Azure AD应用注册添加以下权限之一(需管理员同意):
- 委托权限:
User.Read.All - 应用权限:
Directory.Read.All
- 委托权限:
- 许可证要求:你的Azure AD租户必须拥有Azure AD Premium P1或P2许可证,否则无法访问
signInActivity属性。
2. 正确配置API请求
你之前使用的URL格式本身没问题,可补充显示名称方便识别用户,具体配置如下:
- 请求方法:
GET - 请求URL:
https://graph.microsoft.com/v1.0/users?$select=id,displayName,signInActivity - 请求头:添加
Authorization字段,值为Bearer {你的访问令牌}
返回的响应中,signInActivity对象会包含lastSignInDateTime字段,示例响应片段:
{ "id": "xxx", "displayName": "张三", "signInActivity": { "lastSignInDateTime": "2024-05-20T12:34:56Z", "lastSignInRequestId": "xxx" } }
3. Postman中配置OAuth 2.0身份验证
根据你使用的权限类型选择对应授权方式:
方式一:委托权限(Authorization Code)
- 授权类型:
Authorization Code - 授权URL:
https://login.microsoftonline.com/{你的租户ID}/oauth2/v2.0/authorize - 令牌URL:
https://login.microsoftonline.com/{你的租户ID}/oauth2/v2.0/token - 客户端ID:你的Azure AD应用注册的客户端ID
- 范围:
https://graph.microsoft.com/User.Read.All offline_access - 勾选
Authorize using browser,点击Get New Access Token,完成登录授权后使用令牌。
方式二:应用权限(Client Credentials)
- 授权类型:
Client Credentials - 令牌URL:
https://login.microsoftonline.com/{你的租户ID}/oauth2/v2.0/token - 客户端ID:你的Azure AD应用注册的客户端ID
- 客户端密钥:应用注册中生成的客户端密码
- 范围:
https://graph.microsoft.com/.default - 点击
Get New Access Token,直接获取令牌使用。
4. 常见失败原因排查
- 权限未配置或未同意:检查Azure AD应用注册的「API权限」页面,确认已添加对应权限并完成「授予管理员同意」操作。
- 无Premium许可证:如果租户没有P1/P2,
signInActivity会返回空值或直接提示权限不足。 - 令牌权限不足:解码你的访问令牌(可通过jwt.ms查看),检查
scp(委托权限)或roles(应用权限)声明中是否包含所需权限。 - 错误的select参数:不能直接
$select=lastSignInDateTime,必须选择父属性signInActivity,才能获取其子字段lastSignInDateTime。
内容的提问来源于stack exchange,提问作者SREEJITH R
相关产品推荐
相关产品推荐

