我有一个需要用户身份的网站,我真的不想让他们创建另一个他们必须记住的用户名/密码组合
是否有允许从Microsoft帐户进行身份验证的SDK?
答案 0 :(得分:3)
这很简单,因为ASP.NET 4.5网站的默认空模板显示了如何使用google / facebook / liveid / twitter进行OAuth2身份验证。
http://www.asp.net/aspnet/overview/aspnet-45/oauth-in-the-default-aspnet-45-templates
答案 1 :(得分:2)
查看Principal Context类。您可以使用localhost(计算机)或域上下文创建它,并使用ValidateCrentials(字符串用户名,字符串密码)方法使用Windows凭据进行身份验证。
http://msdn.microsoft.com/en-us/library/bb154889.aspx
以下是我在网站上使用它的方法。 (把它放在你的身份验证控制器的POST方法中)
下面的代码将使用用户名“bob”或“localhost \ bob”或“DOMAIN \ bob”等,并获取正确的PrincipalContext用于验证用户。注意:这里不区分大小写。
public bool ValidateCredentials(string username, System.Security.SecureString password)
{
string domain = Environment.MachineName;
if (username.Contains("\\"))
{
domain = username.Split('\\')[0];
username = username.Split('\\')[1];
}
if (domain.Equals("localhost", StringComparison.CurrentCultureIgnoreCase))
domain = Environment.MachineName;
if (domain.Equals(Environment.MachineName, StringComparison.CurrentCultureIgnoreCase))
using (PrincipalContext context = new PrincipalContext(ContextType.Machine))
{
return context.ValidateCredentials(username, password.ToUnsecureString());
}
else
using(PrincipalContext context = new PrincipalContext(ContextType.Domain))
{
//return context.ValidateCredentials(domain + "\\" + username, password.ToUnsecureString());
return context.ValidateCredentials(username, password.ToUnsecureString());
}
}
答案 2 :(得分:1)
Microsoft为您的应用程序提供集成Microsoft服务的Live Connect SDK,包括Microsoft帐户身份提供程序。
Server-Side Scenarios上有一个具体的示例,它应该涵盖您需要集成的所有内容。
答案 3 :(得分:0)
您的意思是来自活动目录Windows帐户吗?如果是这样,您可以使用Windows身份验证,只需让索引页自动签名即可。
http://msdn.microsoft.com/en-us/library/ff647405.aspx
在代码隐藏文件中使用以下命令以获取有关登录的相关信息:
System.Security.Principal.WindowsIdentity.GetCurrent().Name
User.Identity.IsAuthenticated
User.Identity.AuthenticationType
User.Identity.Name
答案 4 :(得分:0)
来自Microsoft的更改/更名/弃用/无效链接的数量使我发疯。无论如何,我发现的最新版本是“ Microsoft帐户外部登录”,可以首先在Microsoft Developer Portal上进行设置。
我在https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/microsoft-logins找到了一个指南,该指南解释了如何对.Net Core进行此操作,尽管前半部分(例如,设置重定向URI)不是特定于框架的。
我还在https://github.com/aspnet/Security/blob/master/src/Microsoft.AspNetCore.Authentication.MicrosoftAccount/MicrosoftAccountOptions.cs处找到了.Net Core的一些相关源代码,其中显示了检索到的一些声明(用户详细信息):
ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "id");
ClaimActions.MapJsonKey(ClaimTypes.Name, "displayName");
ClaimActions.MapJsonKey(ClaimTypes.GivenName, "givenName");
ClaimActions.MapJsonKey(ClaimTypes.Surname, "surname");
ClaimActions.MapCustomJson(ClaimTypes.Email,
user => user.Value<string>("mail") ?? user.Value<string>("userPrincipalName"));
.Net Core最新版本的支持向我表明,此外部登录API仍然有效。我尚未对其进行测试,如果可以进行此登录集成,我将进行更新。
答案 5 :(得分:-1)
答案 6 :(得分:-1)
答案已过期 - 微软已更改链接
最后找到类似于Facebook / Google身份验证的Javascript库
https://msdn.microsoft.com/en-au/library/ff748792.aspx
并且
http://isdk.dev.live.com/dev/isdk/ISDK.aspx?category=scenarioGroup_core_concepts&index=0