2017-10-27 48 views
6

Tôi có vấn đề kỳ lạ với xác thực bằng azure. Nó hoạt động trong một kịch bản (đăng nhập với một ứng dụng góc sử dụng adal) nhưng không phải trong một ứng dụng khác (tải api web asp.net lên và đăng nhập thông qua cơ chế ủy quyền ui vênh vang). Tôi đã thu hẹp nó xuống một đường bưu điện đến:Sự cố với Azure AD B2C oauth/OpenIdConnect

https://login.microsoftonline.com/te/{tenantid}/oauth2/authresp 

endpoint mà thay unhelpfully trả:

302 

<html> 
<head> 
    <title>Object moved</title></head> 
    <body> 
    <h2>Object moved to <a href="http://localhost:49919/swagger/ui/oauth2redirect-html#error=server_error&amp;error_description=AADB2C%3a+An+exception+has+occured.%0d%0aCorrelation+ID%3a+1816d2f8-aa74-4433-a7c0-d9c8fabebdb0%0d%0aTimestamp%3a+2017-10-27+13%3a46%3a08Z%0d%0a&amp;state={ommitted}">here</a>.</h2> 
</body> 
</html> 

Về cơ bản nói với tôi một ngoại lệ đã xảy ra.

error_description = AADB2C Một ngoại lệ đã xảy ra.

CorrelationID = 1816d2f8-aa74-4433-a7c0-d9c8fabebdb0

Timestamp = 2017-10-27 13:46:08

Ứng dụng góc, thực hiện chính xác cùng một bài nhưng điều đó tuy nhiên trả về một liên kết với mã thông báo id:

302 

<html> 
    <head> 
    <title>Object moved</title> 
    </head> 
    <body> 
    <h2>Object moved to <a href="http://localhost:4200/#state={state - 
    ommitted}&amp;id_token={id token - omitted}">here</a>. 
    </h2> 
    </body> 
</html> 

Tôi không thể thấy bất kỳ sự khác biệt nào trong bài đăng. Cái này không hoạt động (bắt đầu từ vênh vang ui về dự án web api)

POST https://login.microsoftonline.com/te/{tenant - omitted}/oauth2/authresp HTTP/1.1 
Host: login.microsoftonline.com 
Connection: keep-alive 
Content-Length: 1595 
Cache-Control: max-age=0 
Origin: https://login.microsoftonline.com 
Upgrade-Insecure-Requests: 1 
Content-Type: application/x-www-form-urlencoded 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 
DNT: 1 
Referer: https://login.microsoftonline.com/{tenant - omitted}/oauth2/authorize?client_id={clientid - omitted}&redirect_uri=https:%2f%2flogin.microsoftonline.com%2fte%2f{tenant - omitted}%2foauth2%2fauthresp&response_type=id_token&response_mode=form_post&nonce={nonce}&state=StateProperties 
Accept-Encoding: gzip, deflate, br 
Accept-Language: en-GB,en;q=0.9,de-CH;q=0.8,de;q=0.7,fr-CH;q=0.6,fr;q=0.5,it-CH;q=0.4,it;q=0.3 
Cookie: {cookie - omitted}=; x-ms-gateway-slice=005; stsservicecookie=cpim_te 

id_token={omitted} 

Nhưng bài này không:

POST https://login.microsoftonline.com/te/{tenant - omitted}/oauth2/authresp HTTP/1.1 
Host: login.microsoftonline.com 
Connection: keep-alive 
Content-Length: 1590 
Cache-Control: max-age=0 
Origin: https://login.microsoftonline.com 
Upgrade-Insecure-Requests: 1 
Content-Type: application/x-www-form-urlencoded 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 
DNT: 1 
Referer: https://login.microsoftonline.com/{tenant - omitted}/oauth2/authorize?client_id={clientid - omitted}&redirect_uri=https:%2f%2flogin.microsoftonline.com%2fte%2f{tenant - omitted}%2foauth2%2fauthresp&response_type=id_token&response_mode=form_post&nonce={nonce}&state=StateProperties 
Accept-Encoding: gzip, deflate, br 
Accept-Language: en-GB,en;q=0.9,de-CH;q=0.8,de;q=0.7,fr-CH;q=0.6,fr;q=0.5,it-CH;q=0.4,it;q=0.3 
Cookie: {cookie - omitted}; x-ms-gateway-slice=003; stsservicecookie=cpim_te 

id_token={omitted} 

Khi bài viết được khá nhiều giống hệt vấn đề này phải nằm đâu đó trong hoặc cookie hoặc mã thông báo id (mà tôi không thể cung cấp vì lý do bảo mật). Dán mã thông báo ID từ cả hai yêu cầu vào http://www.jwt.io cung cấp cho tôi thông tin tương tự với các xác nhận quyền sở hữu chính xác có trong cả hai. Vì vậy, tôi là một chút khó khăn và hy vọng một người nào đó từ đội bóng xanh có thể bước vào và giúp đỡ?

Rất cám ơn

+0

Bạn có một trang hoặc URL yêu cầu mà bạn có thể chia sẻ cho cả hai trường hợp? Nếu không, bạn có thể nhận URL yêu cầu từ yêu cầu không có người chơi và cung cấp cả hai trường hợp ngay cả khi nó nhắm mục tiêu đến localhost không? –

+0

Có, tôi có thể cung cấp đầy đủ các yêu cầu từ fiddler nhưng tôi không thể gửi chúng ở đây vì chúng chứa thông tin nhạy cảm – Magrangs

+0

@OmerIqbal Tôi đã thêm bạn trên LinkedIn, nếu bạn có thể nhắn tin cho tôi chúng tôi có thể phân loại cách nhận các yêu cầu này cho bạn. Cảm ơn – Magrangs

Trả lời

1

Dựa trên liên kết giới thiệu trong các mẫu yêu cầu của bạn, có vẻ như bạn không gọi /v2.0/ Điểm cuối B2C. Ví dụ, trong các yêu cầu sau đây, con đường nên/{} thuê nhà/OAuth2/v2.0/ủy quyền cho ...

https://login.microsoftonline.com/{tenant}/oauth2/authorize?client_id={clientid}&redirect_uri=https:%2f%2flogin.microsoftonline.com%2fte%2f{tenant}%2foauth2%2fauthresp&response_type=id_token&response_mode=form_post&nonce={nonce}&state=StateProperties 

Do đó, bạn đang nhận được hành vi bất ngờ trên cả ứng dụng của bạn . Điều này cũng có nghĩa là các ứng dụng bạn đang sử dụng không được tạo bằng cổng B2C (chúng tôi đã xác minh điều này qua trò chuyện ngoại tuyến của chúng tôi).

Hiện tại, B2C CHỈ hỗ trợ các ứng dụng được tạo thông qua cổng B2C. Vì vậy, nếu bạn có thể vui lòng tạo một ứng dụng thông qua cổng B2C, và thử lại, bạn nên giải quyết vấn đề này.

+0

Điều này có vẻ đã giải quyết được vấn đề của chúng tôi. – Magrangs

+0

Khi lần đầu tiên chúng tôi tạo đăng ký ứng dụng mà chúng đã được tạo trên điểm cuối v1. Bí quyết này là tạo ứng dụng trên cổng b2c như được mô tả bởi Omer. Sau đó, bạn có thể sử dụng nút 'thử ngay bây giờ' để xem url mà bạn nên gọi. – Magrangs

+0

Ngoài ra hãy chắc chắn rằng cấu hình api web của bạn sử dụng điểm cuối chính sách v2.0. tức là https://login.microsoftonline.com/{0}/v2.0/.well-known/openid-configuration?p={1} (trong đó 0 là người thuê nhà của bạn và 1 là chính sách của bạn) – Magrangs

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