如何使用 Microsoft.Identity.Web 从 AAD 请求电子邮件范围
How to request email scope from AAD using Microsoft.Identity.Web
我正在尝试做一些我知道如何在 .NET Core 中的 .NET Framework 中做的事情,但缺少一个简单的配置步骤。
.NET 框架:
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
Scope = OpenIdConnectScope.OpenIdProfile + " " + OpenIdConnectScope.Email,
....
在 .NET Core 中,我正在使用 Microsoft.Identity.Web,但在发送 Azure Active Directory 登录请求之前无法找到设置范围的位置。如果我在登录页面出现时手动编辑 URL,我可以通过将电子邮件添加到 URL 查询字符串中的范围来取回电子邮件声明。
这是新应用程序中的 Startup.cs 代码,我认为这是我需要添加范围的地方:
services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"));
作为猜测,我尝试在此处将“Scopes”添加到我的应用程序设置中:
"AzureAd": {
"Instance": [...]
"Scopes": "openid profile email"
},
但这似乎并没有附加任何东西。
阅读 kavyasaraboju-MT 的有用答案后有效的方法:
services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme).AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"));
services.Configure<OpenIdConnectOptions>(OpenIdConnectDefaults.AuthenticationScheme, options =>
{
options.Scope.Add("email");
});
请检查以下参考资料是否有帮助。
在启动配置中(添加电子邮件范围)
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options));
services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
{
options.Authority += "/v2.0/";
..
//we can add scopes this way
options.Scope.Add("openid");
options.Scope.Add("profile");
options.Scope.Add("email");
//
…
}
在 manifest
中,我们可以添加可选声明(用于访问令牌或 ID 令牌)
"optionalClaims": {
"idToken": [],
"accessToken": [
{
"name": "email",
"source": null,
"essential": false,
"additionalProperties": []
} ],
授予应用在门户中访问电子邮件、配置文件和 openid 的权限并同意。
并确保登录请求具有必需的范围
&response_type=id_token &scope=openid%20profile%20email
请参考这些
我正在尝试做一些我知道如何在 .NET Core 中的 .NET Framework 中做的事情,但缺少一个简单的配置步骤。
.NET 框架:
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
Scope = OpenIdConnectScope.OpenIdProfile + " " + OpenIdConnectScope.Email,
....
在 .NET Core 中,我正在使用 Microsoft.Identity.Web,但在发送 Azure Active Directory 登录请求之前无法找到设置范围的位置。如果我在登录页面出现时手动编辑 URL,我可以通过将电子邮件添加到 URL 查询字符串中的范围来取回电子邮件声明。
这是新应用程序中的 Startup.cs 代码,我认为这是我需要添加范围的地方:
services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"));
作为猜测,我尝试在此处将“Scopes”添加到我的应用程序设置中:
"AzureAd": {
"Instance": [...]
"Scopes": "openid profile email"
},
但这似乎并没有附加任何东西。
阅读 kavyasaraboju-MT 的有用答案后有效的方法:
services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme).AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"));
services.Configure<OpenIdConnectOptions>(OpenIdConnectDefaults.AuthenticationScheme, options =>
{
options.Scope.Add("email");
});
请检查以下参考资料是否有帮助。
在启动配置中(添加电子邮件范围)
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options));
services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
{
options.Authority += "/v2.0/";
..
//we can add scopes this way
options.Scope.Add("openid");
options.Scope.Add("profile");
options.Scope.Add("email");
//
…
}
在 manifest
中,我们可以添加可选声明(用于访问令牌或 ID 令牌)
"optionalClaims": {
"idToken": [],
"accessToken": [
{
"name": "email",
"source": null,
"essential": false,
"additionalProperties": []
} ],
授予应用在门户中访问电子邮件、配置文件和 openid 的权限并同意。
并确保登录请求具有必需的范围
&response_type=id_token &scope=openid%20profile%20email
请参考这些