paultyng / terraform-provider-unifi

Terraform provider for Unifi :satellite:
https://registry.terraform.io/providers/paultyng/unifi/latest/docs
Mozilla Public License 2.0
499 stars 88 forks source link

GET /proxy/network/status requires authentication on Cloud Key Firmware 2.X (UniFi OS) #92

Closed Patricol closed 3 years ago

Patricol commented 3 years ago

First, thank you (all) so much for all of your work on this project!

After fiddling with the configuration for ages; I realized that this provider wasn't even trying to login before running GET /proxy/network/status; an endpoint which requires authentication in at least this new configuration.

Based on the documentation here, I'm assuming that endpoint used to not require authentication.

Some logs:

[DEBUG] plugin.terraform-provider-unifi_v0.19.1: 2021/01/30 02:40:57 [DEBUG] Unifi API Request Details:
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: ---[ REQUEST ]---------------------------------------
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: GET / HTTP/1.1
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: Host: 192.168.1.7
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: User-Agent: Go-http-client/1.1
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: Accept-Encoding: gzip
[DEBUG] plugin.terraform-provider-unifi_v0.19.1:
[DEBUG] plugin.terraform-provider-unifi_v0.19.1:
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: -----------------------------------------------------
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: 2021/01/30 02:40:57 [DEBUG] Unifi API Response Details:
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: ---[ RESPONSE ]--------------------------------------
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: HTTP/1.1 200 OK
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: Content-Length: 357
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: Accept-Ranges: bytes
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: Connection: keep-alive
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: Content-Type: text/html; charset=utf-8
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: Date: Sat, 30 Jan 2021 02:40:57 GMT
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: Set-Cookie: TOKEN=[redacted]; path=/; secure; httponly
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: Strict-Transport-Security: max-age=15552000; includeSubDomains
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: Vary: Origin
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: X-Content-Type-Options: nosniff
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: X-Csrf-Token: [redacted]
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: X-Dns-Prefetch-Control: off
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: X-Download-Options: noopen
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: X-Frame-Options: SAMEORIGIN
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: X-Response-Time: 5ms
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: X-Xss-Protection: 1; mode=block
[DEBUG] plugin.terraform-provider-unifi_v0.19.1:
[DEBUG] plugin.terraform-provider-unifi_v0.19.1:
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: <!doctype html>
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: <html lang="en">
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: <head>
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: <meta charset="utf-8">
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: <meta name="viewport" content="width=device-width,initial-scale=1"><link href="/2.css" rel="stylesheet"></head>
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: <body>
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: <div id="root"></div>
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: <script type="text/javascript" src="/vendor.0306759b.chunk.js"></script><script type="text/javascript" src="/main.d8e6c715.js"></script></body>
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: </html>
[DEBUG] plugin.terraform-provider-unifi_v0.19.1:
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: -----------------------------------------------------
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: 2021/01/30 02:40:57 [DEBUG] Unifi API Request Details:
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: ---[ REQUEST ]---------------------------------------
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: GET /proxy/network/status HTTP/1.1
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: Host: 192.168.1.7
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: User-Agent: terraform-provider-unifi/0.1
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: Content-Type: application/json; charset=utf-8
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: Accept-Encoding: gzip
[DEBUG] plugin.terraform-provider-unifi_v0.19.1:
[DEBUG] plugin.terraform-provider-unifi_v0.19.1:
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: -----------------------------------------------------
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: 2021/01/30 02:40:57 [DEBUG] Unifi API Response Details:
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: ---[ RESPONSE ]--------------------------------------
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: HTTP/1.1 401 Unauthorized
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: Content-Length: 12
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: Accept-Ranges: bytes
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: Connection: keep-alive
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: Content-Type: text/plain; charset=utf-8
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: Date: Sat, 30 Jan 2021 02:40:57 GMT
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: Set-Cookie: TOKEN=[redacted]; path=/; secure; httponly
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: Strict-Transport-Security: max-age=15552000; includeSubDomains
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: Vary: Origin
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: X-Content-Type-Options: nosniff
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: X-Csrf-Token: [redacted]
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: X-Dns-Prefetch-Control: off
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: X-Download-Options: noopen
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: X-Frame-Options: SAMEORIGIN
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: X-Response-Time: 7ms
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: X-Xss-Protection: 1; mode=block
[DEBUG] plugin.terraform-provider-unifi_v0.19.1:
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: Unauthorized
[DEBUG] plugin.terraform-provider-unifi_v0.19.1: -----------------------------------------------------
[DEBUG] plugin.terraform-provider-unifi_v0.19.1:
Patricol commented 3 years ago

I confirmed that putting the c.do(ctx, "POST", c.loginPath call before the c.do(ctx, "GET", c.statusPath call in go-unifi's unifi/unifi.go fixes the issue.

Patricol commented 3 years ago

Created a PR: paultyng/go-unifi/pull/23

andyalm commented 3 years ago

Just wanted to chime in and say I am also running into this same issue trying to use with my Dream Machine (firmware 1.8.6). Thank you for putting together a fix @Patricol, and thank you for creating this provider @paultyng !

paultyng commented 3 years ago

Fix should be live in v0.19.2 and on the Terraform registry shortly, thanks both!