2017-02-01 34 views
9

Tôi đang xem xét sử dụng Identity Server 4 để xác thực trong ứng dụng MVC dựa trên C#. Tôi muốn sử dụng tài khoản được lưu trữ trong Azure AD dưới dạng nguồn người dùng hợp lệ nhưng tài liệu chỉ dường như đề cập đến Google và OpenID & chỉ đề cập đến Azure khi chuyển.Identityserver 4 và Azure AD

Có ai biết bất kỳ tài liệu hay và hướng dẫn nào về cách sử dụng Azure AD trong ngữ cảnh sử dụng nó với Identity Server 4 không?

Trả lời

5

Bạn có thể sử dụng đăng nhập vào Azure AD từ IdentityServer giống như bạn sử dụng đăng nhập vào IdentityServer từ ví dụ: một ứng dụng Javascript hoặc MVC.

Tôi đã làm điều này thời gian gần đây, và tất cả các bạn cần làm là đăng ký tùy chọn OpenIdConnect để Azure rao như thế này: info

public void ConfigureAuth(IAppBuilder app) 
{ 
    app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType); 

    app.UseCookieAuthentication(new CookieAuthenticationOptions()); 

    app.UseOpenIdConnectAuthentication(
     new OpenIdConnectAuthenticationOptions 
     { 
      ClientId = clientId, 
      Authority = authority, 
      PostLogoutRedirectUri = postLogoutRedirectUri, 
     }); 
} 

Thông tin thêm về điều này ở đây: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-devquickstarts-webapp-dotnet

Bạn nên sau đó trong đăng nhập của bạn hành động gọi phương thức ChallengeAsync:

var authenticationProperties = new AuthenticationProperties { RedirectUri = "your redirect uri" }; 
await HttpContext.Authentication.ChallengeAsync(your policy, authenticationProperties); 

Sau đó cung cấp phương thức gọi lại làm phương thức GET, sau đó làm theo mẫu Đăng nhập bên ngoài được cung cấp trong Id entityServer mẫu: https://github.com/IdentityServer/IdentityServer4.Samples/blob/dev/Quickstarts/4_ImplicitFlowAuthenticationWithExternal/src/QuickstartIdentityServer/Quickstart/Account/AccountController.cs

+0

Cảm ơn bạn đã thông tin. Tôi chỉ mới bắt đầu với IS4, vì vậy tôi cần hỏi bạn điều gì đó: Tôi đọc tài liệu về đăng nhập bên ngoài và mẫu cho bạn thấy nút và tôi cho rằng nó chuyển hướng bạn đến trang xác thực của google, do đó tôi cũng giả sử ví dụ của bạn chuyển hướng đến trang đăng nhập microsoft, hay tôi sai? Nếu nó là sự thật, có thể xác thực tự động một người dùng biết thông tin đăng nhập của mình? Ý tôi là, ai đó gửi đến ứng dụng JS của tôi thông tin đăng nhập của người dùng (microsoft), sau đó tôi gửi chúng đến IS4 và nó cố gắng lấy mã thông báo – FacundoGFlores

+2

Đó thực sự là điểm với OpenID Connect; bạn ủy thác những rắc rối khi xử lý mật khẩu cho một hệ thống khác, trong trường hợp này là Microsoft. Bạn sẽ phải thêm quyền như login.microsoft.com hoặc tương tự, sau đó điều này sẽ được sử dụng khi chuyển hướng. OpenID Connect không phải là Microsoft cụ thể; nó chỉ đơn thuần là một đặc điểm kỹ thuật về cách đăng nhập với một nhà cung cấp bên thứ 3 được cho là sẽ xảy ra. –

6

Có một số sample with Azure AD on github, được chia nhỏ từ mẫu Đăng nhập bên ngoài được cung cấp trong IdentityServer samples.

Mẫu cũng đã khắc phục sự cố đã biết "State parameter generated by middleware is too large for Azure AD #978"

+1

https://github.com/aspnet/Security/issues/1310 Ví dụ mã được đưa ra ở trên hiện đã lỗi thời, từ nhận xét của Haok "Ngăn xếp xác thực 1.0 cũ không còn hoạt động nữa và đã lỗi thời ở 2.0". Điều này đặc biệt liên quan đến cách các bộ repo ở trên thiết lập xác thực Config/cookie của IdentityServer startup.cs. Việc di cư được thực hiện vào khoảng ngày 17 tháng 6, tốt nhất tôi có thể nói. – JakeJ

+0

Nếu bạn đặt trong app.UseCookieAuthentication, sau đó xem xét các ý kiến ​​trên hàm tạo, nó sẽ đưa bạn đến liên kết ở trên. Tôi vẫn upvoted bạn cho sự giúp đỡ của bạn, sẽ là tuyệt vời nếu tôi có thể có chỉ cần cắm vào mã tôi cần thiết từ đó repo một mình. – JakeJ

+0

@JakeJ, bạn có thể tạo sự cố trên kho lưu trữ GitHub, yêu cầu nâng cấp lên Core 2.0 hoặc thậm chí gửi Yêu cầu kéo. –

Các vấn đề liên quan