0

我有一个标准的 Microsoft Graph 代码示例,它执行以下操作:

AuthenticationContext authContext = new AuthenticationContext(SettingsHelper.AzureADAuthority);            
string redirectUri = Url.Action("EmployeeAuthorize", "Account", null, Request.Url.Scheme);
Uri authUri = authContext.GetAuthorizationRequestURL(SettingsHelper.O365UnifiedResource, SettingsHelper.ClientId, new Uri(redirectUri), UserIdentifier.AnyUser, null);
return Redirect(authUri.ToString());

这将打开我尽可能多地自定义并通过 Azure AD 的 Microsoft 登录页面,我可以访问 Azure AD 或 SharePoint 的统一图形 API、一个业务驱动器等......

问题是管理人员根本不喜欢登录体验,即使他们喜欢通过统一图形 api 访问 office365,我在问如何使用以下标准创建自定义体验:

  1. 没有租户要求 - 即。登录名可以是 foo@azure_AD_tenant.com 或 foo@gmail.com 或 foo@outlook.com。目前 Azure AD 需要租户名称或“live id”订阅,我不能限制登录名,因为我们希望客户甚至临时来宾通过角色通过共享文件访问我们的一些内容。
  2. 能够为登录帐户创建角色,可以是我们想要的任何角色,例如管理员、高级客户端、访客等...
  3. 访问统一图形 api...如 Office 365 共享文件或 yammer 对话、群组等...
  4. 登录 UI 必须是 100% 可定制的 - 即。没有重定向到 Microsoft 登录页面体验,而是我们自己的体验。据了解,这可能意味着我们自己保留密码并添加多重身份验证。

基本上 100% 的自定义登录体验和访问 Graph API 的令牌。

一种可能的解决方案可能是:

场景: 1. 用户仅通过我们的 UI (foo@outlook.com / mypassword) 创建一个帐户,我们将其保存在数据库\服务结构中。这使我们能够创建自己的角色。2. 创建帐户后,我们为 foo_outlook@tenant.com 创建一个 azure AD 帐户 (api\powershell)。这可以满足登录名中的 Azure AD 租户要求。3. 当用户再次登录时,我们使用 foo_outlook@tenant.com\mypassword 访问 Azure AD。但这需要图形 API 的 API,我可以在其中使用用户名和密码来获取令牌,但我不确定这是否存在?

我还需要第 3 方身份,但该功能尚不可用。

但是我至少可以创建自己的 100% 个人登录体验并获得访问图形 API 的令牌吗?

谢谢罗伯

4

2 回答 2

0

很高兴看到您在这里使用 Microsoft Graph。Rob,您似乎在这里问了很多问题,从自定义登录体验,拥有自己的登录体验(这是可能的,但有一些限制),支持社交身份提供者,来宾用户,定义的用户角色您的应用程序、Microsoft Graph 功能。我不能在这里回答你所有的问题,但可以给你一些答案

Azure AD 确实具有一些企业对企业功能 - 您可以在此处了解更多信息:https ://www.youtube.com/watch?v=Wo5J61Hp_Z0和https://channel9.msdn.com/Series/Azure-AD -身份/AzureADB2B。这将允许您邀请外部用户(来宾)共享/访问您的应用程序。它也支持 Microsoft Accounts 社交身份,但还不支持其他身份提供者(如 FB 或 Google)。

Azure AD 确实为登录页面提供了一些有限的租户品牌。您可以为 OAuth(密码流)使用不同的流程,您可以在其中构建自己的登录体验以获取用户名/密码并将其发送到 AAD 进行身份验证。但是这样做会损失很多,例如 MFA、条件访问流程、自助密码重置和 B2B 流程(用于邀请客人并让他们登录)。

来宾用户(您邀请的)有点像普通用户,因此他们也可以使用使用 Microsoft Graph 的应用程序。目前 Microsoft Graph 不公开 Yammer 对话 BTW。

还有一种方法可以定义应用程序特定的角色(如管理员、高级客户端等),这些角色可以分配给用户/来宾,作为将应用程序分配给该用户的一部分。Dushyant 在这里有一个很好的博客:http ://www.dushyantgill.com/blog/2014/12/10/roles-based-access-control-in-cloud-applications-using-azure-ad/

HTH,

于 2016-01-06T03:16:38.020 回答
0

Azure B2C 和 B2P 功能结合 Azure Fabric 服务解决了我们的问题。 https://azure.microsoft.com/en-us/documentation/services/active-directory-b2c/

这些 Azure 服务处于预览阶段,但是当您结合 B2C、B2P 和 Azure AD 时,您涵盖了客户、合作伙伴、员工场景。然后,当您添加 Azure Fabric 服务时,您可以创建一个可以桥接 Graph API 可能不可用的区域的服务。

于 2016-01-19T19:30:20.597 回答