构建Azure可交易产品:着陆页如何获取ID Token实现SSO?
解决Azure Marketplace着陆页获取ID Token的问题
你提到的查询字符串里的token参数,就是Azure Marketplace传递的市场令牌,获取ID Token的核心流程是用这个令牌调用官方验证接口来换取,具体步骤如下:
提取
token参数
不管是前端还是后端,先从请求的查询字符串里拿到这个token值。比如前端可以用window.location.search解析,后端根据技术栈从请求对象中提取(比如Node.js用req.query.token,ASP.NET用Request.Query["token"])。后端调用验证API换取ID Token
必须在后端发起POST请求到Azure Marketplace的验证端点,请求格式如下:- 请求URL:
https://marketplaceapi.microsoft.com/api/validate - 请求头:设置
Content-Type: application/json - 请求体:
{"token": "你提取到的marketplace token"}
- 请求URL:
解析返回的ID Token
验证通过后,接口会返回包含id_token字段的JSON响应,这个就是你需要的用户身份令牌。它是JWT格式,你可以用对应的JWT库(比如jose、System.IdentityModel.Tokens.Jwt)解析并验证签名,从中提取用户邮箱、姓名等信息,用于SSO登录流程。
关键注意事项
- 验证操作必须在后端执行,不能仅靠前端,防止令牌被篡改或泄露,保证流程安全性。
- 解析ID Token时一定要验证签名,确保令牌是Azure官方签发的,避免伪造身份。
- 如果验证接口返回错误,要及时提示用户购买流程异常,引导用户重新发起购买操作。
内容的提问来源于stack exchange,提问作者Boland
相关产品推荐
相关产品推荐

