2017-03-02 13 views
5

Tôi sử dụng Swashbuckle cho tài liệu về bộ điều khiển WebAPI. Ngoài ra, tôi sử dụng OAuth2 với Lưu lượng chứng chỉ ứng dụng khách. Vì vậy, để cho phép tôi cần phải vượt qua client_idclient_secret.Cấp phép Swashbuckle OAuth2 với Thông tin đăng nhập của khách hàng

tôi có mã sau đây:

config.EnableSwagger(c => { 
    c.SingleApiVersion("v1", "My API"); 
    c.OAuth2("oauth2") 
     .Flow("application") 
     .TokenUrl("/oauth2/token"); 
    c.OperationFilter<AssignOAuthSecurityRequirements>(); 
}) 
.EnableSwaggerUi(c => { 
    c.EnableOAuth2Support(clientId: "clientIdValue", clientSecret:"clientSecretValue", "", ""); 
    c.CustomAsset("index", Assembly.GetExecutingAssembly(), "WebAPI.Swagger.UI.index.html"); 
}); 

Authorization hoạt động tốt nhưng client_idclient_secret giá trị của tôi được mã hóa (clientIdValue, clientSecretValue). Làm cách nào tôi có thể thêm khả năng nhập giá trị của người dùng vào hộp thoại này? Ai giúp tôi với?

enter image description here

Xin vui lòng cho tôi biết nếu tôi cần phải gửi mã của AssignOAuthSecurityRequirements quá. Cảm ơn tất cả trước

+0

bạn đã giải quyết vấn đề này chưa? tôi đang tìm kiếm một giải pháp cho cùng một câu hỏi. – jks

+0

Ditto, tôi cũng tò mò làm thế nào tôi có thể có được một hộp thoại nơi người tiêu dùng có thể nhập client_id và client_secret của họ để xác thực. Điều này có thể trong vênh vang không? – Zoop

Trả lời

0

Không chắc chính xác điều gì đã xảy ra trong mã của bạn, có thể do thiếu định nghĩa phạm vi.

tôi đã thực hiện nó thành công với ASP.NET Core và phiên bản hiện tại của Swashbuckle.AspNetCore (https://github.com/domaindrivendev/Swashbuckle.AspNetCore)

Các khách hàng thông tin dòng chảy được gọi là "ứng dụng" như vậy, trong tập tin Startup.cs của bạn, bạn cần phải cấu hình Swagger như sau:

 services.AddSwaggerGen(c => { 

      //other configs... 

      c.AddSecurityDefinition("oauth2", new OAuth2Scheme { 
       Type = "oauth2", 
       Flow = "application", 
       TokenUrl = "<token_endpoint_url>", 
       Scopes = new Dictionary<string, string> 
       { 
        { "first-scope", "First scope description" }, 
        { "second-scope", "Second scope description" } 
        //define as many scopes as you want... 
       } 
      }); 
     }); 

tham số TokenUrl phải trỏ đến một OAuth hợp lệ 2.0 endpoint Mã (checkout http://docs.identityserver.io/en/release/endpoints/token.html cho một mẫu về cách điểm cuối nên cư xử/trông tương tự). Cả hai URL tuyệt đối và tương đối đều hoạt động trong các thử nghiệm của tôi.

Sau đó, hộp thoại ủy quyền sẽ giống như dưới đây:

Authorize popup

  • Xin lưu ý, mà bạn cần phải chọn ít nhất một phạm vi trước khi vào nút ủy quyền thực nộp bất cứ điều gì (thành phần oauth nên được thay đổi để thêm tuyên bố từ chối trách nhiệm IMHO).

Không có cấu hình bổ sung nào được yêu cầu trong phần SwaggerUI.

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