クライアントシークレットのローテーション
アプリケーションのクライアントシークレットは、Auth0 DashboardまたはManagement APIを使って変更できます。クライアントシークレットをローテーションするときは、新しい値で認可されたアプリケーションを更新する必要があります。
Dashboardの使用
Auth0 Dashboardで、[Applications(アプリケーション)]>[Applications(アプリケーション)]に移動し、アプリケーションの名前を選択して表示します。
[Settings(設定)]ページを下にスクロールして、[Danger Zone(危険ゾーン)]を見つけて、[Rotate(ローテーション)]を選択して確定します。
ページの上部までスクロールし、[Credentials(資格情報)]タブに切り替えます。
[Client Secret(クライアントシークレット)]の新しいシークレットを確認し、目のアイコンを選択します。
新しい値で、認可されたアプリケーションを更新します。
Management APIの使用
Management APIクライアントシークレットのローテーションエンドポイントを呼び出します。
YOUR_CLIENT_ID
とMGMT_API_ACCESS_TOKEN
のプレースホルダーの値を、それぞれクライアントIDとManagement APIのアクセストークンに置き換えてください。curl --request POST \ --url 'https://{yourDomain}/api/v2/clients/%7ByourClientId%7D/rotate-secret' \ --header 'authorization: Bearer {yourMgmtApiAccessToken}'
Was this helpful?
/var client = new RestClient("https://{yourDomain}/api/v2/clients/%7ByourClientId%7D/rotate-secret"); var request = new RestRequest(Method.POST); request.AddHeader("authorization", "Bearer {yourMgmtApiAccessToken}"); IRestResponse response = client.Execute(request);
Was this helpful?
/package main import ( "fmt" "net/http" "io/ioutil" ) func main() { url := "https://{yourDomain}/api/v2/clients/%7ByourClientId%7D/rotate-secret" req, _ := http.NewRequest("POST", url, nil) req.Header.Add("authorization", "Bearer {yourMgmtApiAccessToken}") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := ioutil.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) }
Was this helpful?
/HttpResponse<String> response = Unirest.post("https://{yourDomain}/api/v2/clients/%7ByourClientId%7D/rotate-secret") .header("authorization", "Bearer {yourMgmtApiAccessToken}") .asString();
Was this helpful?
/var axios = require("axios").default; var options = { method: 'POST', url: 'https://{yourDomain}/api/v2/clients/%7ByourClientId%7D/rotate-secret', headers: {authorization: 'Bearer {yourMgmtApiAccessToken}'} }; axios.request(options).then(function (response) { console.log(response.data); }).catch(function (error) { console.error(error); });
Was this helpful?
/#import <Foundation/Foundation.h> NSDictionary *headers = @{ @"authorization": @"Bearer {yourMgmtApiAccessToken}" }; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://{yourDomain}/api/v2/clients/%7ByourClientId%7D/rotate-secret"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10.0]; [request setHTTPMethod:@"POST"]; [request setAllHTTPHeaderFields:headers]; NSURLSession *session = [NSURLSession sharedSession]; NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { if (error) { NSLog(@"%@", error); } else { NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; NSLog(@"%@", httpResponse); } }]; [dataTask resume];
Was this helpful?
/$curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_URL => "https://{yourDomain}/api/v2/clients/%7ByourClientId%7D/rotate-secret", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_HTTPHEADER => [ "authorization: Bearer {yourMgmtApiAccessToken}" ], ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo $response; }
Was this helpful?
/import http.client conn = http.client.HTTPSConnection("") headers = { 'authorization': "Bearer {yourMgmtApiAccessToken}" } conn.request("POST", "/{yourDomain}/api/v2/clients/%7ByourClientId%7D/rotate-secret", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
Was this helpful?
/require 'uri' require 'net/http' require 'openssl' url = URI("https://{yourDomain}/api/v2/clients/%7ByourClientId%7D/rotate-secret") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["authorization"] = 'Bearer {yourMgmtApiAccessToken}' response = http.request(request) puts response.read_body
Was this helpful?
/import Foundation let headers = ["authorization": "Bearer {yourMgmtApiAccessToken}"] let request = NSMutableURLRequest(url: NSURL(string: "https://{yourDomain}/api/v2/clients/%7ByourClientId%7D/rotate-secret")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume()
Was this helpful?
/値 説明 YOUR_CLIENT_ID
更新するアプリケーションのID。 MGMT_API_ACCESS_TOKEN
スコープ update:client_keys
を持つManagement APIのアクセストークン。新しい値で、認可されたアプリケーションを更新します。
カスタムのクライアントシークレットの設定
ローテーションを要求して自動的にシークレットを生成する代わりに、Management APIクライアント更新エンドポイントを使用して、手動でクライアントシークレットを設定できます。アプリケーションは、実際のローテーションより前にフォールバックとして将来のシークレットで構成されます。
{
curl --request PATCH \
--url https://{TenantDomain}/api/v2/clients/{ClientID} \
--header 'Authorization: Bearer {AccessToken}' \
--header 'Content-Type: application/json' \
--data '{
"client_secret": "{CustomClientSecret}"
}'
}
Was this helpful?