Angular应用Azure AD SSO后端令牌管理的API调用流程咨询
Angular应用Azure AD SSO(后端令牌管理)实现指南
整体SSO调用序列
- 前端触发登录:Angular应用跳转至构造好的Azure AD授权码URL
- 用户完成身份验证:Azure AD重定向至后端回调地址,携带授权码
- 后端兑换令牌:用授权码调用Azure AD令牌端点,获取Access Token/ID Token
- 后端关联会话:将令牌与已实现的指纹会话对象绑定,返回会话标识给前端
- 前端后续请求:每次调用业务接口时携带会话标识,后端验证后用令牌调用Azure AD保护的API
构造授权码URL
基于你已有的OAuth 2.0授权端点(v2),拼接以下参数(注意替换占位符):
https://<你的OAuth 2.0授权端点(v2)>? client_id=<你的Client ID> &response_type=code &redirect_uri=<后端回调地址,需提前在Azure AD门户配置> &response_mode=query &scope=openid profile offline_access <你需要的API权限> &state=<随机字符串,用于防CSRF,可关联前端指纹会话标识> &code_challenge=<PKCE随机码的SHA256哈希,后端生成并存储对应的code_verifier> &code_challenge_method=S256
注意:redirect_uri必须指向后端接口,不能是前端地址;PKCE是强制要求的,用于避免授权码泄露风险。
后端兑换令牌的API调用
使用你已有的OAuth 2.0令牌端点(v2),发起POST请求,具体如下:
请求参数(采用x-www-form-urlencoded格式)
client_id=<你的Client ID> &client_secret=<你的Client Secret> &grant_type=authorization_code &code=<Azure AD回调传来的授权码> &redirect_uri=<和授权URL中一致的后端回调地址> &code_verifier=<之前生成的PKCE原始随机码>
响应处理
成功请求后会返回包含access_token、id_token、refresh_token的响应,后端需完成:
- 验证ID Token的签名、受众、有效期等(公钥可从OpenID Connect元数据文档获取)
- 将令牌与指纹会话对象绑定存储(比如存入Redis,键为指纹会话ID)
- 向前端返回会话标识,后续前端请求业务接口时携带该标识
- 定期用
refresh_token刷新access_token,避免用户重复登录
额外注意事项
- 后端回调地址必须在Azure AD应用注册的「重定向URI」中配置,类型选择「Web」
- 必须将
offline_access加入scope,才能获取refresh_token实现令牌刷新 - 指纹会话服务需确保会话的唯一性和安全性,防范会话劫持风险
内容的提问来源于stack exchange,提问作者Cpui
相关产品推荐
相关产品推荐

