将 AuthenticationResult 转换为 MVC 会话
Turn AuthenticationResult into MVC session
什么?
我有一个需要用户名和密码的 API,并且可以 return 一个 AuthenticationResult
。我想利用该令牌在 MVC 应用程序中启动会话。这是细流:
- 用户转到 MVC 应用程序
- 用户提供密码和用户名
- MVC 调用 API 并发送用户名和密码
- API return 到 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 using the token???
我们可以根据需要修改 API 和 MVC 应用程序,但我们确实需要让用户使用任何电子邮件创建他们的帐户并将他们的信息存储在 AAD 上。如果这完全是在错误的道路上,任何建议表示赞赏!
你描述的场景不受支持,也不推荐使用 Azure AD。如果您想要白标体验,用户可以选择任意用户名并且您可以完全自定义信用收集页面,请考虑 Azure AD B2C:http://blogs.technet.com/b/ad/archive/2015/09/16/azure-ad-b2c-and-b2b-are-now-in-public-preview.aspx
什么?
我有一个需要用户名和密码的 API,并且可以 return 一个 AuthenticationResult
。我想利用该令牌在 MVC 应用程序中启动会话。这是细流:
- 用户转到 MVC 应用程序
- 用户提供密码和用户名
- MVC 调用 API 并发送用户名和密码
- API return 到 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 using the token???
我们可以根据需要修改 API 和 MVC 应用程序,但我们确实需要让用户使用任何电子邮件创建他们的帐户并将他们的信息存储在 AAD 上。如果这完全是在错误的道路上,任何建议表示赞赏!
你描述的场景不受支持,也不推荐使用 Azure AD。如果您想要白标体验,用户可以选择任意用户名并且您可以完全自定义信用收集页面,请考虑 Azure AD B2C:http://blogs.technet.com/b/ad/archive/2015/09/16/azure-ad-b2c-and-b2b-are-now-in-public-preview.aspx