| # Token Authentication |
| ## Supported version |
| 7.0.0+ |
| |
| ## Why do we need token authentication after TLS? |
| TLS is about transport security, ensuring a trusted network. |
| On the other hand, token authentication is about monitoring **whether application data can be trusted**. |
| |
| ## Token |
| In the current version, a token is considered a simple string. |
| |
| ### Set Token |
| 1. Set token in `agent.config` file |
| ```properties |
| # Authentication active is based on backend setting, see application.yml for more details. |
| agent.authentication = ${SW_AGENT_AUTHENTICATION:xxxx} |
| ``` |
| |
| 2. Set token in `application.yml` file |
| ```yaml |
| ······ |
| receiver-sharing-server: |
| default: |
| authentication: ${SW_AUTHENTICATION:""} |
| ······ |
| ``` |
| |
| ## Authentication failure |
| The Skywalking OAP verifies every request from the agent and only allows requests whose token matches the one configured in `application.yml` to pass through. |
| |
| If the token does not match, you will see the following log in the agent: |
| ``` |
| org.apache.skywalking.apm.dependencies.io.grpc.StatusRuntimeException: PERMISSION_DENIED |
| ``` |
| |
| ## FAQ |
| ### Can I use token authentication instead of TLS? |
| No, you shouldn't. Of course, it's technically possible, but token and TLS are used for untrusted network environments. In these circumstances, |
| TLS has a higher priority. Tokens can be trusted only under TLS protection, and they can be easily stolen if sent through a non-TLS network. |
| |
| ### Do you support other authentication mechanisms, such as ak/sk? |
| Not for now. But we welcome contributions to this feature. |