c# - 应用程序的 Azure AD 和 Office 365 身份验证

标签 c# azure authentication office365

我正在学习 Azure AD 和 Office 365,我想知道以下内容是否可行,如果可以,如何去做,因为我对文档的几个方面感到困惑:

假设公司 CompanyA 为其组织的用户提供了 Office 365。这些用户使用 Office 365 凭据使用 Exchange/Outlook 和 Office 登录(Office 桌面)。

CompanyA 在内部托管了 Active Directory,但他们计划使用 Azure AD Connect Sync 将 AD 中的所有对象同步到 Azure AD 中,以便在云和内部网络之间同步密码更改(以及用户对象)等内容。

  • 有没有办法使用 Office 365 凭据登录网络系统并同步到 AD,或者将 Azure AD 链接到 Office 365 帐户,以便他们可以使用 Office 365 凭据登录计算机?

问题 2 如下(我真正的问题!):

现在,将有一个在内部和外部(可能在 Azure 云中)托管的自定义应用程序。该应用程序可以是桌面应用程序、网络应用程序或某些服务。

有没有办法让应用程序针对 Azure AD/Office 365 进行身份验证,以确保用户登录(使用其 Office 365 凭据)成功?是否有一种无需弹出对话框的自动化方法,以便一切都可以使用 C#/.NET Framework 通过 API 以编程方式完成?

谢谢!

最佳答案

当您引用 Office 365 凭据时,您已经在谈论 Azure AD。每个 Office 365 租户都有一个 Azure AD 实例支持,它是用户帐户和凭据的存储。详细说明请参见以下文章: https://support.office.com/en-us/article/Understanding-Office-365-identity-and-Azure-Active-Directory-06a189e7-5ec6-4af2-94bf-a22ea225a7a9

您目前是称为云身份的模型。听起来您想迁移到同步身份联合身份

如果您将 Azure AD Connect 安装配置为同步到您的 Office 365 租户(通过在安装过程中向其提供租户的全局管理员),那么您将通过与您的 Office 365 同步的前提 ADDS 凭据有效地获得所需的设置( Azure AD)凭据。

但是,由于您想要将现有租户的帐户与本地帐户进行匹配,因此您需要提前与用户进行沟通,并了解同步到 Azure 时软匹配的工作原理AD 与现有帐户。 您可以从这篇知识库文章开始:https://support.microsoft.com/en-us/kb/2641663

如果操作正确,最终结果将如下:

  • 用户帐户和密码更改通过您的本地 AD 进行管理。
  • 密码更改在本地进行,并与与本地帐户匹配的 Azure AD 帐户同步
  • 您将无法从 Office 365 更改密码,也无法在本地反射(reflect)这些更改,除非您启用需要 Azure AD Premium 订阅的密码写回功能。
  • 用户将使用其 AD 凭据登录域资源,该凭据与 Azure AD 中的 Office 365 凭据相匹配

此时您将转到同步身份。这是迈向联合身份的下一步所必需的,因此无论哪种方式您都希望进入此阶段。在您完全理解该模型的含义之前,我不会采取下一步联合行动。

关于问题的第 2 部分,有多个库可以将 Azure AD 身份验证添加到自定义应用程序。此页面有按语言列出的库列表: https://learn.microsoft.com/en-us/azure/active-directory/active-directory-authentication-libraries

关于c# - 应用程序的 Azure AD 和 Office 365 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41246628/

相关文章:

c# - 我如何处理具有组合的对象

c# - 如何使用 iTextSharp 创建 pdfformfields?

c# - 在c#中读取azure管道环境变量

azure - 消耗计划中的 Azure 函数是否按等待 Thread.Sleep() 所花费的时间计费?

azure - 在 Xamarin 中与服务器通信的最佳方式?

javascript - 当某个输入为空时创建另一个按钮

c# - Xamarin.Forms - 使用默认应用打开文件

authentication - 我可以以编程方式创建 AWS Cognito 用户登录吗?

c++ - 在菜单中放置登录功能 (C++)

c# - 将 MediaStreamSource 绑定(bind)到 MediaElement