mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
feat: add oauth2 token exchange (#12196)
Co-authored-by: Steven Masley <stevenmasley@gmail.com>
This commit is contained in:
Generated
+127
@@ -534,6 +534,127 @@ curl -X DELETE http://coder-server:8080/api/v2/licenses/{id} \
|
||||
|
||||
To perform this operation, you must be authenticated. [Learn more](authentication.md).
|
||||
|
||||
## OAuth2 authorization request.
|
||||
|
||||
### Code samples
|
||||
|
||||
```shell
|
||||
# Example request using curl
|
||||
curl -X POST http://coder-server:8080/api/v2/login/oauth2/authorize?client_id=string&state=string&response_type=code \
|
||||
-H 'Coder-Session-Token: API_KEY'
|
||||
```
|
||||
|
||||
`POST /login/oauth2/authorize`
|
||||
|
||||
### Parameters
|
||||
|
||||
| Name | In | Type | Required | Description |
|
||||
| --------------- | ----- | ------ | -------- | --------------------------------- |
|
||||
| `client_id` | query | string | true | Client ID |
|
||||
| `state` | query | string | true | A random unguessable string |
|
||||
| `response_type` | query | string | true | Response type |
|
||||
| `redirect_uri` | query | string | false | Redirect here after authorization |
|
||||
| `scope` | query | string | false | Token scopes (currently ignored) |
|
||||
|
||||
#### Enumerated Values
|
||||
|
||||
| Parameter | Value |
|
||||
| --------------- | ------ |
|
||||
| `response_type` | `code` |
|
||||
|
||||
### Responses
|
||||
|
||||
| Status | Meaning | Description | Schema |
|
||||
| ------ | ---------------------------------------------------------- | ----------- | ------ |
|
||||
| 302 | [Found](https://tools.ietf.org/html/rfc7231#section-6.4.3) | Found | |
|
||||
|
||||
To perform this operation, you must be authenticated. [Learn more](authentication.md).
|
||||
|
||||
## OAuth2 token exchange.
|
||||
|
||||
### Code samples
|
||||
|
||||
```shell
|
||||
# Example request using curl
|
||||
curl -X POST http://coder-server:8080/api/v2/login/oauth2/tokens \
|
||||
-H 'Accept: application/json'
|
||||
```
|
||||
|
||||
`POST /login/oauth2/tokens`
|
||||
|
||||
> Body parameter
|
||||
|
||||
```yaml
|
||||
client_id: string
|
||||
client_secret: string
|
||||
code: string
|
||||
refresh_token: string
|
||||
grant_type: authorization_code
|
||||
```
|
||||
|
||||
### Parameters
|
||||
|
||||
| Name | In | Type | Required | Description |
|
||||
| ----------------- | ---- | ------ | -------- | ------------------------------------------------------------- |
|
||||
| `body` | body | object | false | |
|
||||
| `» client_id` | body | string | false | Client ID, required if grant_type=authorization_code |
|
||||
| `» client_secret` | body | string | false | Client secret, required if grant_type=authorization_code |
|
||||
| `» code` | body | string | false | Authorization code, required if grant_type=authorization_code |
|
||||
| `» refresh_token` | body | string | false | Refresh token, required if grant_type=refresh_token |
|
||||
| `» grant_type` | body | string | true | Grant type |
|
||||
|
||||
#### Enumerated Values
|
||||
|
||||
| Parameter | Value |
|
||||
| -------------- | -------------------- |
|
||||
| `» grant_type` | `authorization_code` |
|
||||
| `» grant_type` | `refresh_token` |
|
||||
|
||||
### Example responses
|
||||
|
||||
> 200 Response
|
||||
|
||||
```json
|
||||
{
|
||||
"access_token": "string",
|
||||
"expiry": "string",
|
||||
"refresh_token": "string",
|
||||
"token_type": "string"
|
||||
}
|
||||
```
|
||||
|
||||
### Responses
|
||||
|
||||
| Status | Meaning | Description | Schema |
|
||||
| ------ | ------------------------------------------------------- | ----------- | -------------------------------------- |
|
||||
| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | OK | [oauth2.Token](schemas.md#oauth2token) |
|
||||
|
||||
## Delete OAuth2 application tokens.
|
||||
|
||||
### Code samples
|
||||
|
||||
```shell
|
||||
# Example request using curl
|
||||
curl -X DELETE http://coder-server:8080/api/v2/login/oauth2/tokens?client_id=string \
|
||||
-H 'Coder-Session-Token: API_KEY'
|
||||
```
|
||||
|
||||
`DELETE /login/oauth2/tokens`
|
||||
|
||||
### Parameters
|
||||
|
||||
| Name | In | Type | Required | Description |
|
||||
| ----------- | ----- | ------ | -------- | ----------- |
|
||||
| `client_id` | query | string | true | Client ID |
|
||||
|
||||
### Responses
|
||||
|
||||
| Status | Meaning | Description | Schema |
|
||||
| ------ | --------------------------------------------------------------- | ----------- | ------ |
|
||||
| 204 | [No Content](https://tools.ietf.org/html/rfc7231#section-6.3.5) | No Content | |
|
||||
|
||||
To perform this operation, you must be authenticated. [Learn more](authentication.md).
|
||||
|
||||
## Get OAuth2 applications.
|
||||
|
||||
### Code samples
|
||||
@@ -547,6 +668,12 @@ curl -X GET http://coder-server:8080/api/v2/oauth2-provider/apps \
|
||||
|
||||
`GET /oauth2-provider/apps`
|
||||
|
||||
### Parameters
|
||||
|
||||
| Name | In | Type | Required | Description |
|
||||
| --------- | ----- | ------ | -------- | -------------------------------------------- |
|
||||
| `user_id` | query | string | false | Filter by applications authorized for a user |
|
||||
|
||||
### Example responses
|
||||
|
||||
> 200 Response
|
||||
|
||||
Generated
+21
@@ -8722,6 +8722,27 @@ _None_
|
||||
| `udp` | boolean | false | | a UDP STUN round trip completed |
|
||||
| `upnP` | string | false | | Upnp is whether UPnP appears present on the LAN. Empty means not checked. |
|
||||
|
||||
## oauth2.Token
|
||||
|
||||
```json
|
||||
{
|
||||
"access_token": "string",
|
||||
"expiry": "string",
|
||||
"refresh_token": "string",
|
||||
"token_type": "string"
|
||||
}
|
||||
```
|
||||
|
||||
### Properties
|
||||
|
||||
| Name | Type | Required | Restrictions | Description |
|
||||
| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ | -------- | ------------ | --------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `access_token` | string | false | | Access token is the token that authorizes and authenticates the requests. |
|
||||
| `expiry` | string | false | | Expiry is the optional expiration time of the access token. |
|
||||
| If zero, TokenSource implementations will reuse the same token forever and RefreshToken or equivalent mechanisms for that TokenSource will not be used. |
|
||||
| `refresh_token` | string | false | | Refresh token is a token that's used by the application (as opposed to the user) to refresh the access token if it expires. |
|
||||
| `token_type` | string | false | | Token type is the type of token. The Type method returns either this or "Bearer", the default. |
|
||||
|
||||
## tailcfg.DERPHomeParams
|
||||
|
||||
```json
|
||||
|
||||
Reference in New Issue
Block a user