首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Microsoft.Identity.Web从AAD请求电子邮件范围

如何使用Microsoft.Identity.Web从AAD请求电子邮件范围
EN

Stack Overflow用户
提问于 2022-02-18 00:06:55
回答 1查看 695关注 0票数 0

我正在尝试做一些我知道如何在.NET框架中.NET核心中做的事情,但是缺少一个简单的配置步骤。

.NET框架:

代码语言:javascript
复制
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
Scope = OpenIdConnectScope.OpenIdProfile + " " + OpenIdConnectScope.Email,
....

在.NET核心中,我使用的是Microsoft.Identity.Web,在发送Azure Active Directory登录请求之前,我还没有找到设置作用域的位置。如果在登录页面发生时手动编辑URL,则可以通过将电子邮件添加到URL查询字符串中的作用域来获取电子邮件声明。

这是新应用程序中的Startup.cs代码,我认为这是我需要添加范围的地方:

代码语言:javascript
复制
            services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
                .AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"));

作为猜测,我尝试在我的应用程序设置中添加"Scopes“:

代码语言:javascript
复制
  "AzureAd": {
    "Instance": [...]
    "Scopes": "openid profile email"
  },

但这似乎与任何事情无关。

在阅读了kavyasaraboju的有用答案之后,什么起作用了:

代码语言:javascript
复制
services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme).AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"));
services.Configure<OpenIdConnectOptions>(OpenIdConnectDefaults.AuthenticationScheme, options =>
{
    options.Scope.Add("email");
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-18 13:10:57

请检查下面的参考资料是否有帮助。

启动 Config (添加电子邮件范围)

代码语言:javascript
复制
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令牌)

代码语言:javascript
复制
"optionalClaims": {
        "idToken": [],
        "accessToken": [
            {
                "name": "email",
                "source": null,
                "essential": false,
                "additionalProperties": []
            } ],

允许应用程序访问门户中的电子邮件、配置文件和openid,并同意。

并确保签名请求具有所需的作用域。

&response_type=id_token &scope=openid%20profile%20email

参考

  1. asp.net core mvc - Azure AD v2 with Azure App Registration missing optional email claim in ID Token for directly assigned user - Stack Overflow
  2. azure active directory - how to request additional user profile data (email address, ) - Stack Overflow
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71166918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档