Microsoft Graph通过自定义登录访问

时间:2016-01-05 05:27:40

标签: office365 microsoft-graph

我有一个标准的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());

这将打开我尽可能自定义的Microsoft登录页面,并通过Azure AD,我可以访问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登录页面体验,但我们自己的经验。据了解,这可能意味着保留密码并自行添加多重身份验证。
  5. 基本上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,我可以使用用户名&获取令牌的密码,我不确定这是否存在?

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

    但我能否至少创建自己的100%个人登录体验并获得访问图API的令牌?

    感谢 罗布

2 个答案:

答案 0 :(得分:0)

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

Azure AD确实具有一些企业对企业功能 - 您可以在此处找到更多信息:https://www.youtube.com/watch?v=Wo5J61Hp_Z0https://channel9.msdn.com/Series/Azure-AD-Identity/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/

HTHS,

答案 1 :(得分:0)

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

这些Azure服务处于预览状态,但是当您将B2C,B2P和Azure AD结合使用时,您将涵盖客户端,合作伙伴和员工方案。然后,当您添加Azure Fabric Services时,您可以创建一个可以桥接Graph API可能无法使用的区域的服务。