我有一个标准的 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,我在问如何使用以下标准创建自定义体验:
- 没有租户要求 - 即。登录名可以是 foo@azure_AD_tenant.com 或 foo@gmail.com 或 foo@outlook.com。目前 Azure AD 需要租户名称或“live id”订阅,我不能限制登录名,因为我们希望客户甚至临时来宾通过角色通过共享文件访问我们的一些内容。
- 能够为登录帐户创建角色,可以是我们想要的任何角色,例如管理员、高级客户端、访客等...
- 访问统一图形 api...如 Office 365 共享文件或 yammer 对话、群组等...
- 登录 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 的令牌吗?
谢谢罗伯