AAD支持nonce声明,可以在生成授权请求的时候包含nonce参数。示例如下:
// 生成随机的nonce值
var nonce = Math.random().toString(36).substring(7);
// 构建授权请求
var requestParams = {
response_type: 'code',
client_id: 'YOUR_CLIENT_ID',
redirect_uri: 'YOUR_REDIRECT_URI',
nonce: nonce, // 包含nonce参数
state: 'YOUR_STATE_VALUE',
scope: 'openid profile'
};
// 将请求转为URL,并发起跳转
var requestUrl = 'https://login.microsoftonline.com/YOUR_TENANT_ID/oauth2/v2.0/authorize?' + $.param(requestParams);
window.location.replace(requestUrl);
在AAD验证完授权请求后,会将nonce值包含在通信中的id_token中返回给应用程序。应用程序需要从id_token中获取该值,并验证其有效性,以确保收到的是自己的授权请求的响应。