通过自定义登录访问Microsoft Graph

office365 microsoft-graph

814 观看

2回复

1 作者的声誉

我有一个执行以下操作的标准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需要租户名称或“实时ID”订阅,并且我对登录名称没有限制,因为我们希望客户端甚至临时访客通过角色通过共享文件访问我们的某些内容。
  2. 能够为登录帐户创建角色,这些角色可以是我们想要的任何内容,例如管理员,高级客户,访客等。
  3. 访问统一的图形API ...例如Office 365共享文件或Yammer对话,组等...
  4. 登录用户界面必须100%可定制-即 没有重定向到Microsoft登录页面的体验,而是我们自己的体验。可以理解,这可能意味着要保留密码并自行添加多重身份验证。

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

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

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

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

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

谢谢罗布

作者: Rob Hogue 的来源 发布者: 2016 年 1 月 5 日

回应 (2)


0

4993 作者的声誉

很高兴在这里看到您使用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。

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

HTH,

作者: Dan Kershaw - MSFT 发布者: 06.01.2016 03:16

0

1 作者的声誉

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

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

作者: Rob Hogue 发布者: 19.01.2016 07:30
32x32