Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从msal 2.0令牌获取UPN和电子邮件地址_Javascript_C#_Active Directory_Adal_Msal - Fatal编程技术网

Javascript 从msal 2.0令牌获取UPN和电子邮件地址

Javascript 从msal 2.0令牌获取UPN和电子邮件地址,javascript,c#,active-directory,adal,msal,Javascript,C#,Active Directory,Adal,Msal,从adal切换到msal 2.0浏览器库时,idToken响应中缺少用户的UPN,这导致将idToken传递到后端后,principal.Identity.name中的主体没有名称。这在adal版本中可用 var principal = tokenHandler.ValidateToken(validationToken, validationParameters, out SecurityToken validatedToken); 我得到了preferred\u name作为声明,但调用G

从adal切换到msal 2.0浏览器库时,idToken响应中缺少用户的UPN,这导致将idToken传递到后端后,
principal.Identity.name
中的主体没有名称。这在adal版本中可用

var principal = tokenHandler.ValidateToken(validationToken, validationParameters, out SecurityToken validatedToken);
我得到了
preferred\u name
作为声明,但调用Graph API检索电子邮件地址似乎不可用,因为它不是UPN

通常,我需要如何更改msal的令牌验证和UPN检索?传递accessToken并单独验证以获得更多索赔


msal支持两种获得额外索赔的方法

  • 通过广告清单设置
  • 请求令牌时,如下所示
  • 通过添加其他作用域

    const loginRequest = {
        scopes: ['User.Read', 'email']
    };
    

    在验证令牌时,可以通过设置
    TokenValidationParameters来使用不同的声明来获取主体的身份。NameClaimType

    IdToken位于证书中。证书未加载或用户无法访问。使用虚拟连接验证证书,连接可能未完成。怀疑的是,代码使用的是TLS的默认版本,即1.0/1.1,您需要特别添加TLS版本以使用1.2/1.3。五年前,由于安全问题,业界决定取消1.0/1.1。今年6月,微软推出了一项安全更新,在服务器上禁用1.0/1.1。旧示例代码可能没有使用1.2/1.3的更新。证书还需要使用正确的加密模式。很抱歉,我的问题可能不清楚。我在这里说的是,文档不清楚密钥来自何处。甚至RCP规范也令人困惑()。JWK是JSON Web密钥。您的链接指的是JWT(JasonWeb令牌)。我认为代币和钥匙是一样的。因此,如果您查看RFC 7517第4.6段,它指的是证书。密钥不必来自证书,但证书是分发密钥的正常方法。您的文档指的是应用层,而传输层使用的是TLS身份验证。我有一种感觉,我们谈论的是非常不同的事情:)不。您正在查看唯一的应用层,我知道在较低级别发生了什么。