Ana içeriğe geç

Auth API

Bir düğüm çalıştırdığınızda, API çağrılarının bir yetkilendirme token'ı ile birlikte gelmesini talep edebilirsiniz. Bu API, yetkilendirme token'larının oluşturulmasını ve iptal edilmesini yönetir.

Bir yetkilendirme token'ı, bir veya daha fazla API uç noktasına erişim sağlar. Bu, bir düğümün API'lerine erişimi devretmek için faydalıdır. Token'lar 12 saat sonra süresi dolmaktadır.

Yetkilendirme token'ı, bir API çağrısının başlığında sağlanır. Özellikle, Authorization başlığı Bearer TOKEN.GOES.HERE değerini taşımalıdır (burada TOKEN.GOES.HERE, token ile değiştirilmelidir).

Bu API, düğümün ` --api-auth-required` ile başlatılması durumunda erişilebilir. Düğüm bu CLI olmadan başlatılırsa, API çağrıları yetkilendirme token'larına ihtiyaç duymaz, dolayısıyla bu API erişilemez. Bu API'nın erişilmesi asla bir yetkilendirme token'ı gerektirmez.

Yetkilendirme token'ı oluşturma yetkileri olmalıdır. Düğümünüzü --api-auth-required ile çalıştırıyorsanız, Auth API'nin şifresinin okunacağı dosyayı belirlemek için --api-auth-password-file argümanını da belirtmelisiniz. Yetkilendirme token'larını oluşturmak/iptal etmek için bu şifreyi sağlamanız gerekmektedir.

Düğümünüzü --api-auth-required ile çalıştırdığınızda, MetaMask gibi bazı araçların token'ları olmadığı için düğümünüze API çağrıları yapamayabileceğini unutmayın.

Format

Bu API, json 2.0 RPC formatını kullanır. JSON RPC çağrıları hakkında daha fazla bilgi için bakın.

Endpoint

/ext/auth

Methods

auth.newToken

Bir veya daha fazla API uç noktasına erişim sağlayan yeni bir yetkilendirme token'ı oluşturur.

Signature

auth.newToken(
{
password: string,
endpoints: []string
}
) -> {token: string}
  • password, bu düğümün yetkilendirme token'ı şifresidir.
  • endpoints, oluşturulan token ile erişilebilecek uç noktaların listesidir. Eğer endpoints içinde "*" bulunuyorsa, oluşturulan token herhangi bir API uç noktasına erişebilir.
  • token, yetkilendirme token'ıdır.

Örnek Çağrı

curl -X POST --data '{
"jsonrpc": "2.0",
"method": "auth.newToken",
"params":{
"password":"BURAYA ŞİFRENİZİ YAZIN",
"endpoints":["/ext/bc/X", "/ext/info"]
},
"id": 1
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/auth

Bu çağrı, API uç noktalarına /ext/bc/X (yani X-Chain) ve /ext/info (yani ) erişimi sağlayan bir yetkilendirme token'ı oluşturacaktır.

Örnek Yanıt

{
"jsonrpc": "2.0",
"result": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJFbmRwb2ludHMiOlsiKiJdLCJleHAiOjE1OTM0NzU4OTR9.Cqo7TraN_CFN13q3ae4GRJCMgd8ZOlQwBzyC29M6Aps"
},
"id": 1
}

Bu yetkilendirme token'ı, API çağrılarında Authorization başlığına Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJFbmRwb2ludHMiOlsiKiJdLCJleHAiOjE1OTM0NzU4OTR9.Cqo7TraN_CFN13q3ae4GRJCMgd8ZOlQwBzyC29M6Aps değerini vererek kullanılmalıdır.

Örneğin, bu token ile çağrısını yapmak için:

curl -X POST --data '{
"jsonrpc":"2.0",
"id" :1,
"method" :"info.peers"
}' 127.0.0.1:9650/ext/info \
-H 'content-type:application/json;' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJFbmRwb2ludHMiOlsiKiJdLCJleHAiOjE1OTM0NzU4OTR9.Cqo7TraN_CFN13q3ae4GRJCMgd8ZOlQwBzyC29M6Aps'

auth.revokeToken

Daha önce oluşturulan bir token'ı iptal eder. Verilen token artık herhangi bir uç noktaya erişim sağlamayacaktır. Eğer token geçersizse, hiçbir şey yapmaz.

Signature

auth.revokeToken(
{
password: string,
token: string
}
) -> {success: bool}
  • password, bu düğümün yetkilendirme token'ı şifresidir.
  • token, iptal edilen yetkilendirme token'ıdır.

Örnek Çağrı

curl -X POST --data '{
"jsonrpc": "2.0",
"method": "auth.revokeToken",
"params":{
"password":"123",
"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1OTMxNzIzMjh9.qZVNhH6AMQ_LpbXnPbTFEL6Vm5EM5FLU-VEKpYBH3k4"
},
"id": 1
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/auth

Örnek Yanıt

{
"jsonrpc": "2.0",
"result": {
"success": true
},
"id": 1
}

auth.changePassword

Bu düğümün yetkilendirme token'ı şifresini değiştirir. Eski bir şifre altında oluşturulan herhangi bir yetkilendirme token'ı geçersiz hale gelir.

Signature

auth.changePassword(
{
oldPassword: string,
newPassword: string
}
) -> {success: bool}
  • oldPassword, bu düğümün mevcut yetkilendirme token'ı şifresidir.
  • newPassword, bu API çağrısından sonra düğümün yeni yetkilendirme token'ı şifresidir. 1 ile 1024 karakter arasında olmalıdır.

Örnek Çağrı

curl -X POST --data '{
"jsonrpc": "2.0",
"method": "auth.changePassword",
"params":{
"oldPassword":"BURADA ESKİ ŞİFRENİZİ YAZIN",
"newPassword":"BURADA YENİ ŞİFRENİZİ YAZIN"
},
"id": 1
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/auth

Örnek Yanıt

{
"jsonrpc": "2.0",
"result": {
"success": true
},
"id": 1
}