所以我发现他们想要的是我生成的该字段中的 JWT 令牌。
所以首先我创建了一个生成网络令牌的方法
private string GenerateJSONWebToken()
{
// Create token key
SymmetricSecurityKey securityKey =
new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["Token:TokenSigningKey"]));
SigningCredentials credentials =
new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
// Set token expiration
DateTime startTime = DateTime.UtcNow;
DateTime expiryTime = startTime.AddMinutes(120);
// Generate the token
JwtSecurityToken token =
new JwtSecurityToken(
configuration["Token:TokenIssuer"],
configuration["Token:TokenAudience"],
null,
notBefore: startTime,
expires: expiryTime,
signingCredentials: credentials);
string result = new JwtSecurityTokenHandler().WriteToken(token);
return result;
}
在我的 appsettings.json 中我添加了
{
"Logging": {
...
},
"Token": {
"TokenAudience": "xxx-xxx-xxx-xxx",
"TokenIssuer": "https://sts.windows.net/yyyy-yyyy-yyyy/",
"TokenSigningKey": "zzz"
}
}
- 令牌受众我设置为 8adf8e6e-67b2-4cf2-a259-e3dc5476c621 ,可以在此处阅读https://learn.microsoft.com/en-us/azure/active-directory/app-provisioning/use-scim-to-provision-users-and-groups https://learn.microsoft.com/en-us/azure/active-directory/app-provisioning/use-scim-to-provision-users-and-groups.
TL;DR令牌的受众将是库中应用程序的应用程序模板 ID,所有自定义应用程序的应用程序模板 ID 为 8adf8e6e-67b2-4cf2-a259-e3dc5476c621
- TokenIssuer 的 yyyy 部分是 azure 广告租户的租户 ID
- 签名密钥中的 zzz 只是您选择的密钥。
现在我终于生成了一个包含 appsettings.json 中的值的令牌。
然后,我将此密钥粘贴到 Azure AD 中的“秘密令牌”字段中。
最后,如何制作这个多租户(我的下一步)
- 从 appsettings.json 中删除 Token:TokenIssuer
- 当您调用GenerateJSONWebToken时,发送客户端Azure AD租户ID并使用它而不是appsettings.json中的静态值(您的客户端将给您这个,或者您通过将应用程序连接到他们而获得它)
- 在startup.cs中通知我已经实现了IssuerValidator。更新此内容以验证您的数据存储而不是 appsettings.json。