11

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

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

4

6 回答 6

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

于 2013-08-12T17:19:11.330 回答
2

查看 Principal Context 类。您可以使用 localhost(机器)或域上下文创建它,并使用 ValidateCrentials(string username, string password) 方法使用 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());
            }


    }
于 2013-08-20T22:19:01.693 回答
1

Microsoft 提供Live Connect SDK,用于将 Microsoft 服务集成到您的应用程序中,包括 Microsoft 帐户身份提供程序。

有一个关于服务器端场景的具体示例,它应该涵盖您需要进行集成的所有内容。

于 2013-08-23T10:29:04.900 回答
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
于 2013-08-22T12:50:10.897 回答
0

来自微软的大量更改/品牌重塑/弃用/死链接让我发疯。无论如何,我发现的最新版本是“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 仍然有效。我还没有对它们进行测试,如果我可以进行登录集成,我会更新。

于 2018-08-16T01:37:13.860 回答
-1

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

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

或者

https://dev.onedrive.com/

于 2013-08-24T09:26:52.407 回答