5

Mục tiêu của tôi là ứng dụng Góc sử dụng dịch vụ web, với người dùng ứng dụng/dịch vụ web được xác thực bằng Windows auth. Người dùng có thể đăng nhập vào máy trên miền Windows của chúng tôi, mở trình duyệt và sử dụng ứng dụng Góc mà không cần đăng nhập lại.Làm cách nào để sử dụng Windows auth với Identity Server 3?

Nghiên cứu

Tôi đã tải về tất cả các mẫu mã nguồn từ https://github.com/IdentityServer/IdentityServer3.Samples/

tôi đã làm việc thông qua việc đơn giản nhất OAuth2 Walkthrough mẫu. Không vấn đề gì.

Sau đó, tôi mở Máy chủ web (Windows Auth All-In-One) mẫu. Tôi có thể khôi phục và xây dựng dự án, sau khi cho ý kiến ​​ra hai dòng mã đó đã gây ra vấn đề (Clients.cs dòng 313.359, thiết lập 'AllowAccessTokensViaBrowser = false'. Có lẽ không có liên quan.)

Khi ứng dụng được chạy, Tôi có thể xem trang đích IdentityServer3 trên máy chủ cục bộ: 44333. Tuyệt quá.

Tôi cũng có thể thấy Siêu dữ liệu dịch vụ xác thực Windows (Tài liệu SAML) trên máy chủ cục bộ: 44333/cửa sổ. Ngoài ra, tuyệt vời.

Vấn đề là, tôi không biết phải làm gì tiếp theo. Tài liệu này dường như cho thấy rằng bước tiếp theo liên quan đến việc viết một khách hàng mà thực hiện cuộc gọi với dịch vụ Windows authentication để nhận mã:

http://github.com/IdentityServer/IdentityServer3/issues/1463

Đây có phải là cách tiếp cận đúng không? Tôi không thể làm mẫu mã hoạt động được. Tôi thậm chí không chắc chắn tôi có thể chỉ OAuth2Client ở đúng nơi. Xin vui lòng ai đó có thể giải thích quá trình này, hoặc chỉ cho tôi một ví dụ với một khách hàng làm việc? Cảm ơn bạn trước để được giúp đỡ :)

EDIT

tôi đã và đang làm một số nghiên cứu thêm. Tôi đã kiểm tra nhật ký máy chủ Identity để đảm bảo rằng Thêm điểm cuối WS-Federation, hoạt động hoàn tất trong khi định cấu hình. Nó có.

Sau đó, tôi đã tạo ra một giao diện điều khiển ứng dụng đơn giản để gọi dịch vụ xác thực Windows, như đề xuất ở đây: github.com/IdentityServer/IdentityServer3/issues/2318

Sau khi nhập khẩu Thinktecture.IdentityModel.Client, tôi sửa đổi mã trên trang đó để phù hợp với số cổng của tôi vv, tôi đã kết thúc với điều này:

var handler = new HttpClientHandler 
    { 
     UseDefaultCredentials = true 
    }; 
    var oauthClient = new OAuth2Client(
        new Uri("https://localhost:44333/windows/token"), 
        handler); 

    var result = oauthClient.RequestCustomGrantAsync("windows").Result; 

đối tượng kết quả của tôi vẫn có một HttpErrorStatusCode của notfound, mà làm cho tôi buồn.

KHÁC EDIT

tôi đã cố gắng chỉ cho khách hàng tại các thiết bị đầu cuối máy chủ nhận dạng, theo đề nghị dưới đây bởi Branimir.Vì vậy, mã của tôi hiện đã đọc:

var oauthClient = new OAuth2Client(
    new Uri("https://localhost:44333/connect/token"), 
    handler); 

Điều này không có tác dụng. Đây là thông tin mà nhật ký máy chủ Identity cho biết:

Start token request 
iisexpress.exe Information: 0 : 04/27/2016 20:35:23 +01:00 [Information] (IdentityServer3.Core.Validation.SecretParser) 
Parser found no secret 
iisexpress.exe Information: 0 : 04/27/2016 20:35:23 +01:00 [Information] (IdentityServer3.Core.Validation.ClientSecretValidator) 
No client secret found 
iisexpress.exe Information: 0 : 04/27/2016 20:35:23 +01:00 [Information] (IdentityServer3.Core.Endpoints.TokenEndpointController) 
End token request 
iisexpress.exe Information: 0 : 04/27/2016 20:35:23 +01:00 [Information] (IdentityServer3.Core.Results.TokenErrorResult) 
Returning error: invalid_client 

Vì vậy, tôi không còn tiếp tục.

+0

Bạn đã kiểm tra URL chưa? Tôi đã tải xuống cùng một mã và có vẻ như điểm cuối là https: // localhost: 44333/connect/token, nhưng tôi vẫn không biết cách sử dụng nó. – Branimir

+0

Cảm ơn Branimir, tôi đã thử sử dụng URL đó và nó không hoạt động đối với tôi, tôi đã chỉnh sửa câu hỏi của mình để đề cập đến điều này. Nếu bạn thực hiện bất kỳ tiến bộ nào, vui lòng cho tôi biết. –

Trả lời

0

Tại sao bạn muốn sử dụng điểm cuối mã thông báo - chỉ cần thực hiện luồng lưu trữ ẩn OAuth/OpenID Connect. Thao tác này sẽ tự động xác thực người dùng bằng xác thực Windows.

+0

Cảm ơn bạn đã trả lời. Tôi là một người mới đến khu vực này vì vậy tôi đánh giá cao sự giúp đỡ. Nếu bạn biết về bất kỳ hướng dẫn nào của Windows Auth + Identity Server, tôi sẽ rất biết ơn. –

+5

Sau một số thử nghiệm, tôi đã tìm được giải pháp bằng cách sử dụng luồng ngầm. Tôi đã đăng giải pháp của tôi trên github với một hướng dẫn (https://github.com/mark-truran/ID3WINDOWSAUTH) –

+3

Tôi xuống bình chọn câu trả lời vì nó về cơ bản là một nhận xét snarky. Tuy nhiên, nó dường như hướng dẫn các poster ban đầu cho câu trả lời đúng người ân cần cho chúng tôi một liên kết để chúng tôi có thể tìm ra điều này. Cảm ơn, Mark. –

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