2013-08-12 14 views
10

Tôi có một trang web cần danh tính người dùng, tôi thực sự không muốn họ tạo một tên người dùng/mật khẩu khác mà họ phải nhớTôi có thể sử dụng Tài khoản Microsoft để xác thực với trang web của mình như thế nào

có SDK cho phép xác thực từ tài khoản Microsoft không?

+0

Tôi thực sự hy vọng cho một trang web mẫu – stuck

+0

lol họ đã có những cái tên rất nhiều cho điều này, tôi chắc chắn rằng nó thật khó để theo dõi. Họ sử dụng để tính phí một số tiền nhất định mỗi năm cho các trang web để sử dụng nó, và nó không phải là rất phải chăng cho chúng tôi guys ít. Tôi tự hỏi nếu nó miễn phí ngay bây giờ với sự gia tăng của facebook, vv – ps2goat

Trả lời

4

Đó là khá dễ dàng như một mẫu trống mặc định của một trang web ASP.NET 4.5 cho thấy làm thế nào để có xác thực OAuth2 với google/facebook/liveid/twitter.

http://www.asp.net/aspnet/overview/aspnet-45/oauth-in-the-default-aspnet-45-templates

+0

Cảm ơn bạn đã liên kết, nó không rõ ràng đối với người dùng khi được xác thực, tôi cần một thứ gì đó duy nhất để sử dụng để lập chỉ mục cho cơ sở dữ liệu của tôi (dưới dạng tên người dùng duy nhất). giá trị này không thể thay đổi theo thời gian, tôi có thể giả định sự kết hợp của nguồn auth và email là duy nhất không? – stuck

+1

Vâng, đúng thế. Nếu nhà cung cấp danh tính trả về một email, bạn có thể sử dụng nó trong nội bộ để phân biệt người dùng. Tôi thậm chí không nghĩ rằng bạn cần phải kết hợp nó với các nguồn auth - điều này là bởi vì tất cả các nhà cung cấp nhận dạng đáng tin cậy xác nhận email đầu tiên trước khi trả lại nó. Điều đó có nghĩa là nếu google/facebook/liveid nói rằng email của người dùng đó là [email protected] thì bạn có thể tin tưởng điều này bất kể nguồn auth nằm trong số ba thứ này. –

+0

Liên kết đã chết – mayu

3

Kiểm tra lớp ngữ cảnh chính. Bạn có thể tạo nó bằng cách sử dụng ngữ cảnh cục bộ (Máy) hoặc miền và sử dụng phương thức ValidateCrentials (tên người dùng chuỗi, mật khẩu chuỗi) để xác thực bằng cách sử dụng thông tin đăng nhập Windows.

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

Đây là cách tôi đã sử dụng nó trong trang web của mình. (Đặt điều này trong phương thức POST của bộ điều khiển xác thực của bạn hoặc một cái gì đó)

Mã bên dưới sẽ lấy tên người dùng là "bob" hoặc "localhost \ bob" hoặc "DOMAIN \ bob" v.v ... và nhận được đúng PrincipalContext cho xác thực người dùng. LƯU Ý: trường hợp của nó không nhạy cảm ở đây.

 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()); 
      } 


    } 
1

Bạn có nghĩa là từ tài khoản cửa sổ thư mục đang hoạt động? Nếu vậy bạn có thể sử dụng xác thực cửa sổ và chỉ cần trang chỉ mục tự động đăng nhập.

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

Sử dụng các lệnh sau trong mã của bạn đằng sau tập tin để có được những thông tin liên quan cho đăng nhập:

System.Security.Principal.WindowsIdentity.GetCurrent().Name 
User.Identity.IsAuthenticated 
User.Identity.AuthenticationType 
User.Identity.Name 
2

Microsoft cung cấp các Live Connect SDK cho hội nhập dịch vụ của Microsoft vào các ứng dụng của bạn, bao gồm các tài khoản Microsoft nhà cung cấp nhận dạng.

Có một ví dụ cụ thể trên Server-Side Scenarios cần bao gồm tất cả những gì bạn cần để tích hợp.