【发布时间】:2018-12-17 16:11:08
【问题描述】:
什么?
我有一个接受用户名和密码并且可以返回AuthenticationResult 的 API。我想利用该令牌在 MVC 应用程序中启动会话。这是薄的流程:
- 用户转到 MVC 应用程序
- 用户提供密码和用户名
- MVC 调用 API 并发送用户名和密码
- API 将令牌返回给 MVC 应用
在第 4 步之后,我该怎么做才能在 MVC 中启动会话。
场景信息:
我们希望利用 Azure Active Directory 将我们所有的用户信息保存在那里,但我们希望用户能够使用任何电子邮件进行注册,而不仅仅是我们的域。我们计划使用他们的电子邮件和我们的域的组合为 AAD 中的每个用户创建一个帐户(因为在 AAD 中创建的帐户必须属于一个域)。因此,如果用户的电子邮件是 john@gmail.com,AAD 将存储 johnatgmailcom@ourdomain.onmicrosoft.com
为什么?
- 我们不能强制用户使用我们的域创建帐户。
- 我们不希望用户看到 AAD 登录屏幕
- 我们不想在我们的数据库中存储任何类型的用户帐户信息
- 我们计划将来在 iOS/Android 应用程序中利用 AAD,因此在 MVC 应用程序之外进行身份验证将允许这样做
这是我们 API 中的 POC 代码,用于验证来自 MVC 应用程序的用户登录请求:
AuthenticationContext context = new AuthenticationContext("https://login.microsoftonline.com/cccccccc-cccc-cccc-cccc-ccccccccccccc/oauth2/token");
try
{
UserCredential uc = new UserCredential(userCredendtials.Username, userCredendtials.Password);
AuthenticationResult azureADToken = context.AcquireToken("https://graph.windows.net@" + "ourdomain.onmicrosoft.com", clientID, uc);
return Ok(azureADToken);
}
catch
{
// We didn't authenticate user, send not found - generic error, we can change this
return NotFound();
}
然后,我们检查 API 调用的结果在 MVC 应用程序中是什么,以做出相应的响应。 1,000,000 美元的问题是我们如何启动和管理 MVC 会话,就好像我们使用令牌使用 ASP.Net Identity 之类的东西一样???
我们可以根据需要修改 API 和 MVC 应用程序,但我们确实需要让用户使用任何电子邮件创建他们的帐户并将他们的信息存储在 AAD 上。如果这完全是在错误的道路上,任何建议表示赞赏!
【问题讨论】:
标签: asp.net-mvc asp.net-web-api azure-active-directory