Tôi đang cố viết một ứng dụng di động sẽ nhận dữ liệu từ trang web dựa trên webapi còn lại.Web bảo mậtAPI với JWT
Trang web phải được bảo mật qua ACS (vì có thể có nhiều nhà cung cấp danh tính).
Ứng dụng di động của tôi hiện đang truy vấn url sau https://xx.accesscontrol.windows.net/v2/metadata/IdentityProviders.js?protocol=javascriptnotify&realm=http://xx.azurewebsites.net/&version=1.0 để nhận danh sách các IP.
Sau đó tôi cho phép người dùng chọn IP và sau đó sử dụng điều khiển trình duyệt web, tôi hiển thị cho họ thông tin đăng nhập.
Khi người dùng đã đăng nhập, tôi nắm bắt phản hồi và trích xuất mã thông báo, nhưng bây giờ tôi không thực sự chắc chắn mình nên làm gì. Mã thông báo trông giống như sau: -
{"appliesTo":"http://****.azurewebsites.net/",
"context":null,
"created":1362069383,
"expires":1362072983,
"securityToken":"... a lot of text:-)",
"tokenType":"urn:ietf:params:oauth:token-type:jwt"}
Vì vậy, tôi đoán tôi nên dùng phần securityToken và thêm phần này vào phần tiêu đề Cấp phép để nhận yêu cầu?
Câu hỏi 1 là làm cách nào để đính kèm mã thông báo - tôi chỉ cần đính kèm bit mã thông báo bảo mật hay tôi phải căn cứ 64 mã hóa nhiều và đính kèm nó làm tiêu đề Cấp quyền?
Câu hỏi 2 Tôi làm cách nào để định cấu hình webapi để xử lý JWT? Sau khi tôi đã sửa đổi ACS phát hành thẻ JWT, và tôi đã cài đặt JWTSecurityTokenHandler tôi vẫn nhận được lỗi sau (đây là với xác thực thụ động):
JWT10310: Unable to validate signature. validationParameters.SigningTokenResolver type: 'System.IdentityModel.Tokens.IssuerTokenResolver', was unable to resolve key to a token.
The SecurityKeyIdentifier is:
'SecurityKeyIdentifier
(
IsReadOnly = False,
Count = 1,
Clause[0] = X509ThumbprintKeyIdentifierClause(Hash = 0x2FEE3EE96B019D4BA0C046124B77C652EEF768E5)
)
'. validationParameters.SigningToken was null.
Cảm ơn
Ross