我正在尝试做一些我知道如何在.NET框架中.NET核心中做的事情,但是缺少一个简单的配置步骤。
.NET框架:
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
Scope = OpenIdConnectScope.OpenIdProfile + " " + OpenIdConnectScope.Email,
....在.NET核心中,我使用的是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的有用答案之后,什么起作用了:
services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme).AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"));
services.Configure<OpenIdConnectOptions>(OpenIdConnectDefaults.AuthenticationScheme, options =>
{
options.Scope.Add("email");
});发布于 2022-02-18 13:10:57
请检查下面的参考资料是否有帮助。
在启动 Config (添加电子邮件范围)
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
请参考
https://stackoverflow.com/questions/71166918
复制相似问题