当前位置: 首页 > 知识库问答 >
问题:

声明:UPN、名称与Azure AD之间的差异

东方俊力
2023-03-14

在系统中。识别模型。声明有三个条目:UPN、Name和Name标识符http://schemas.xmlsoap.org/ws/2005/05/identity/claims/namehttp://schemas.xmlsoap.org/ws/2005/05/identity/claims/upnhttp://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier

在使用AzureAD、OpenIdConnect和office365进行身份验证后进行调试时。我看到名称和upn总是相同的,看起来像给定用户的“电子邮件”:例如johndoe@contoso.com或johdoe@contoso.onmicrosoft.com而名称标识符是非人类可读的标识符。

那么,我确实有几个问题:

1)名称和upn在我的上下文中是否总是相同?

2) 它们是可变的吗?我们看到域名出现在名称(或upn)中,这是否意味着如果contoso。com被rototo收购。com名称和upn是否可以修改?或者类似地,如果该公司开始其Office365订阅时没有自定义域名,但后来他们决定使用自定义域名?这些主张的价值可能会改变?

3)它与2)有关,但是命名标识符是获得特定用户引用的唯一安全方法吗?例如存储为数据库中的外键?

共有1个答案

严项明
2023-03-14
  1. UPN是用户主体名。它总是以看起来像电子邮件地址的格式。本质上它有3个部分。用户帐户名、分隔符(即@符号)和UPN后缀或域名。其主要目的是在认证期间使用。而名称应该用于显示目的。名称和UPN可以相同或不同。根据你的目标,你应该使用一个相对于另一个。

引用用户名格式

第一个部分回答了第二个问题。UPN将根据域名进行更改。域是UPN后缀。Name是显示名称,除非在将AD用户从一个域迁移到另一个域时指定规则,否则不能更改。

NameIdentifier是唯一的“用户的SAML名称标识符”。换句话说,它只是用户对象的ID。目的:当试图唯一地识别用户时,这应该是您的选择。

参考:

  • 索赔的作用
  • Stackoverflow上关于Name标识符的目的的更早的问题
 类似资料:
  • 在我们的系统中,我们有一种设置用户权限的方法。他们创建一个组名,例如Admin,然后为他们想要执行的任务分配所有权限。 例如,他们可以添加AddCompany、ViewCompany、DeleteCompany和EditCompany 这使得创建不同的权限组变得非常容易,并且我们可以非常容易地控制安全性。 在这个实例中,组名=角色,每个权限都是一个声明,我这样想对吗?

  • 我正在尝试添加模块依赖项。 当我写作时, 执行项目(`:服务') 它向我展示了一些错误,比如, 无法解决":app@debugUnitTest /compileClasspath"的依赖关系:无法解决项目:服务。 和, 相同:app@debugAndroidTest/compileClasspath,:app@debug/compileClasspath和:app@release/编译路径 但是,

  • 我对C++不是很熟悉,这是我第一次使用的不仅仅是名称空间std。下面的有什么区别? VS 在这两个之后,我现在似乎可以创建一个MyClass对象了。一种方式比另一种好吗?另外,如果我都不这样做,我还可以通过每次需要时在MyNamespace::MyClass之前附加MyClass来引用MyClass吗? 接下来,如果我使用第二个选项转发declare,我还需要吗?在我(不是很好)的理解中,在C++

  • 在swift中似乎有两个相等运算符:双相等()和三相等(),这两者有什么区别?

  • 问题内容: 如何在JavaScript中创建名称空间,以使我的对象和函数不会被其他同名对象和函数覆盖?我使用了以下内容: 有没有更优雅或更简洁的方法? 问题答案: 我喜欢这个:

  • 问题内容: 我正在编写一个小程序,以有序的方式定时显示我的Rubik立方体解。但是Python(3)一直困扰着我关于全局声明之前使用时间的困扰。但是奇怪的是,它在开始时就声明为(是,是列表),然后在函数(他抱怨的地方)中再次声明为,并使用对其进行“全局”处理。这是我的代码,因此您可以根据需要进行分析: 任何帮助将不胜感激,因为我是Python世界的新手:) 问题答案: 全局声明是当你声明是 如果声