如何使用Microsoft帐户对我的网站进行身份验证

时间:2013-08-12 17:13:07

标签: asp.net authentication

我有一个需要用户身份的网站,我真的不想让他们创建另一个他们必须记住的用户名/密码组合

是否有允许从Microsoft帐户进行身份验证的SDK?

7 个答案:

答案 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)

只需通过Oauth 2.0使用“Live Connect”:

http://msdn.microsoft.com/en-us/library/live/hh243647.aspx

https://dev.onedrive.com/

答案 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