package com.malk.service.eiam;

import com.malk.server.eiam.EiamTokenResponse;

import java.util.Map;

/**
 * EIAM DeveloperAPI OIDC 原子接口。
 */
public interface EiamClient {

    /**
     * 生成应用 access token。
     *
     * @param instanceId IDaaS 实例 ID
     * @param applicationId 应用 ID
     * @param grantType OAuth2 授权类型
     * @param clientId 客户端 ID
     * @param clientSecret 客户端密钥
     * @param bodyExt 可选表单参数：scope、exclusive_tag、code、redirect_uri、refresh_token、code_verifier、device_code、username、password
     * @return EIAM Token 原始响应
     * @apiNote https://help.aliyun.com/zh/idaas/eiam/developer-reference/api-eiam-developerapi-2022-02-25-generatetoken
     */
    EiamTokenResponse generateToken(String instanceId, String applicationId, String grantType,
                                    String clientId, String clientSecret, Map<String, Object> bodyExt);
}
