14

Chúng tôi đã định cấu hình Ứng dụng khách để sử dụng xác thực IdentityServer3 thông qua giao thức OpenID Connect (đó là ASP.NET MVC App sử dụng phần mềm trung gian OWIN để hỗ trợ OIDC).Bỏ qua màn hình đăng nhập IdentityServer3

Bản thân IdentityServer3 được cấu hình để sử dụng cả đăng nhập cục bộ và đăng nhập bên ngoài (ví dụ Azure AD).

Trong luồng thông thường sau khi ứng dụng cần xác thực người dùng, nó chuyển hướng anh đến màn hình đăng nhập IdentityServer3 - không sao. Nhưng trong một số trường hợp, trên cơ sở theo yêu cầu, tôi muốn bỏ qua màn hình đăng nhập bằng cách nào đó cho phép IdentityServer3 biết rằng người dùng muốn đăng nhập với nhà cung cấp nhận dạng bên ngoài cụ thể ngay lập tức.

Điều đó có thể thực hiện được không?

image

+0

Tôi đã tìm ra rằng nếu Khách hàng giới hạn ở một IdP thì màn hình Đăng nhập tự động bị bỏ qua, nhưng trong trường hợp nhiều IDP (ví dụ như đăng nhập cục bộ và Azure AD) thì câu hỏi vẫn mở –

+0

Có một ví dụ về cách tính năng HRD [tại đây] (https://github.com/IdentityServer/IdentityServer3.Samples/tree/master/source/CustomHrd). Có thể nó sẽ giúp được bạn. – pepo

+0

@pepo, cảm ơn tôi chắc chắn sẽ xem xét nó! Tôi hiểu rằng phần mềm trung gian OWIN "mặc định" cho OpenID Connect không thể chuyển bất kỳ thông tin bổ sung nào vào Thử thách xác thực - https://github.com/aspnet/Security/issues/99. Vì vậy, không chỉ Identity Server nên hỗ trợ nhận thông tin về ý định của người dùng, nhưng phần mềm trung gian OWIN sẽ có thể gửi nó và nó không thể xuất hiện, đúng không? –

Trả lời

15

Chỉ cần tìm thấy giải pháp trong IdentityServer3's Authorization/Authentication Endpoint documentation!

acr_values ​​(tùy chọn) cho phép để vượt qua thêm xác thực thông tin liên quan với dịch vụ sử dụng - có cũng đánh giá cao với đặc biệt ý nghĩa: IDP: name_of_idp bỏ qua đăng nhập/màn hình lĩnh vực gia đình và chuyển tiếp người dùng trực tiếp đến việc cung cấp danh tính chọn (nếu phép cho mỗi cấu hình máy khách) thuê: name_of_tenant có thể được sử dụng để vượt qua một tên người thuê nhà với dịch vụ sử dụng

Làm thế nào để vượt qua các thông số bổ sung sử dụng OWIN OpenID Connect middleware: https://katanaproject.codeplex.com/workitem/325

Dưới đây là ví dụ về các yêu cầu ủy quyền:

sample request

+1

Đó là một điều thú vị. – PyroJoke

+0

@PyroJoke, Rất vui khi bạn thấy nó hữu ích, Dima :) –

5

Tôi biết điều này là cũ nhưng nghĩ rằng tôi vẫn muốn đặt này ở đây để giúp đỡ ai đó nếu họ muốn tự động chuyển hướng đến thông tin đăng nhập bên ngoài:

public override Task PreAuthenticateAsync(PreAuthenticationContext context) 
{ 
    context.SignInMessage.IdP = "windows"; 
    return base.PreAuthenticateAsync(context); 
} 

Bạn về cơ bản có thể ghi đè PreAuthenticateAsync trên UserServiceBase và chang e IdP thuộc tính trên context.SignInMessage là tên nhà cung cấp bên ngoài đã được thiết lập khi khởi động của bạn. Và điều này sẽ chuyển hướng.

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