6

Tôi đang sử dụng ví dụ mã sau để cắm đăng nhập Azure AD vào ứng dụng của tôi (https://github.com/AzureADSamples/WebApp-OpenIDConnect-DotNet).Chuyển hướng người dùng đến trang đăng nhập tùy chỉnh khi sử dụng Azure AD

Tôi nhận thấy rằng mã hoạt động tốt tuy nhiên tôi muốn có khả năng chuyển hướng người dùng đến trang đăng nhập tùy chỉnh nếu người dùng chưa đăng nhập hoặc phiên của họ đã hết hạn. Tôi đang đấu tranh tuy nhiên để có được điều này để làm việc và đã tự hỏi nếu điều này thực sự có thể ở tất cả?

Có theo thiết kế mà người dùng luôn được chuyển hướng đến trang Đăng nhập của Microsoft cho Azure AD thay vì trang tùy chỉnh của riêng bạn hoặc có cài đặt tôi đã bỏ qua không?

Tôi đã sửa đổi các mã được cung cấp trong FilterConfig.cs để kích hoạt các thuộc tính lọc Authorize:

filters.Add(new AuthorizeAttribute()); 

Tôi cũng đã thêm phần sau đây để web.config nhưng không có hiệu lực:

<authorization> 
<allow users="?" /> 
</authorization> 

Trong Startup.Auth.cs tệp Tôi không thể thấy bất kỳ thay đổi nào có thể cho app.UseOpenIdConnectAuthentication để cho phép tôi thiết lập trang đăng nhập chung như tôi có thể thực hiện với xác thực dựa trên cookie.

Trả lời

9

Sau khi xem xét lại mã, tôi đã tìm thấy giải pháp cho vấn đề của mình.

Trong Startup.Auth.cs:

app.UseCookieAuthentication(new CookieAuthenticationOptions { 
    LoginPath = new PathString("/Account/Login") 
}); 

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

Đó là sự bao gồm của dòng AuthenticationMode = AuthenticationMode.Passive mà dường như để ngăn chặn OpenIdConnectAuth từ thực hiện tự động 302 chuyển hướng đến các trang AAD đăng nhập.

+0

@BenV kết hợp đề xuất của bạn về việc sử dụng phí bảo hiểm AAD cho màn hình đăng nhập AAD tùy chỉnh với ở trên, tôi nghĩ đây là cách tiếp cận thích hợp hơn để có luồng đăng nhập được tùy chỉnh một chút. – choms79

+0

Nếu tôi có thể upvote câu trả lời này nhiều hơn một lần, tôi sẽ. –

0

Giả sử Azure AD là nhà cung cấp danh tính của bạn, bạn có thể Customize the login page, nhưng bạn phải chạy Azure AD Premium để làm như vậy.

+0

Cảm ơn vì @BenV này, tôi đã hy vọng rằng tôi có thể kiểm soát hoàn toàn trong ứng dụng của mình và hiển thị trang đăng nhập tùy chỉnh bất cứ khi nào ủy quyền là cần thiết, tức là http: // /Tài khoản/Đăng nhập. Tôi đoán bạn không thể vì điều đó đánh bại mục đích của AD Premium. – choms79

+0

Ý tưởng là thay vì chịu trách nhiệm về ** an toàn ** thu thập và tự di chuyển thông tin đăng nhập của người dùng, bạn có thể ủy quyền trách nhiệm này cho AAD. – BenV

0

này có lẽ những gì tôi đang tìm kiếm ...

xác thực

mẫu này cho phép người dùng để đăng nhập vào Azure AD không sự cần thiết phải sử dụng đăng nhập dựa trên trình duyệt gốc của Azure AD.

Tôi hiểu điều này phần nào được coi là mô hình chống vì tôi sẽ gửi các cơ chế tích hợp của Azure để xử lý xác thực đa yếu tố, đặt lại mật khẩu, v.v ... nhưng tôi sẽ giữ toàn quyền kiểm soát trải nghiệm.

==== Chỉnh sửa ==== Đây không phải là cách tôi muốn đi vì tôi sẽ loại bỏ rất nhiều những gì AAD đưa ra khỏi hộp. Về bản chất, tôi muốn giữ luồng kiểm soát của AAD nhưng tôi chỉ muốn có khả năng kiểm soát trang nào người dùng truy cập khi người dùng không đăng nhập.

Hiện tại luồng là: Không được phép -> 302 redirect -> đăng nhập AAD

tôi muốn: Không được phép -> chuyển hướng 302 -> tự tổ chức đăng nhập trang cần thiết -> nút đăng nhập tài khoản báo chí -> chuyển hướng 302 -> AAD đăng nhập

của dòng chảy này Tôi dường như không thể làm việc.

+0

Điều này cũng lạm dụng giao thức OAuth (dành cho ủy quyền được ủy quyền) để xác thực, mà [một số người cho rằng] (http://www.thread-safe.com/2012/01/problem-with-oauth-for-authentication .html) mở một số lỗ hổng bảo mật. Nhưng có, nó là kỹ thuật có thể và bạn giữ lại toàn quyền kiểm soát của UX. – BenV

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