如何在OAuth 2.0中验证访问令牌?

2024-09-30 12:17:16 发布

您现在位置:Python中文网/ 问答频道 /正文

如何验证访问令牌?如何使用访问令牌获取令牌信息?在

这是验证访问令牌的url吗?在

https://mydomain/oauth2/v1/tokeninfo?access_token=tYPJr7F6ArYkd1Vdlh1gbhWlnz8NLA9TZmky2NpvaHZxhw14udbmFNRG1pKMKVEY&token_type=bearer


Tags: httpstoken信息urlaccesstypeoauth2v1
1条回答
网友
1楼 · 发布于 2024-09-30 12:17:16

下面是一个从token获取的数据示例(示例来自Azure auth-但使用OAuth2并不重要)。在

如何从令牌中提取信息:

getAuthInteractiveCallback()getAuthSilentCallback()方法中:

private AuthenticationCallback getAuthSilentCallback() {
    return new AuthenticationCallback() {
        @Override
        public void onSuccess(AuthenticationResult authenticationResult) {
            /* Successfully got a token, call api now */
            Log.d(TAG, "Successfully authenticated");
            Log.d(TAG, "ID Token: " + authenticationResult.getIdToken());
            Log.d(TAG, "ID Token: " + authenticationResult.getAccessToken());

            try {
                String token = authenticationResult.getIdToken();
                String token2 = token.substring(token.indexOf('.') + 1, token.lastIndexOf('.'));
                byte[] data = Base64.decode(token2, Base64.DEFAULT);
                String text = new String(data, StandardCharsets.UTF_8);
                JSONObject jsonObject = new JSONObject(text);
                JSONArray jsonArray = new JSONArray(jsonObject.getString("emails"));
                String eMail = jsonArray.get(0).toString();
                Log.d(TAG, "eMail: " + eMail);

            } catch (JSONException ex) { }



            authResult = authenticationResult;
            state.setAuthResult(authResult);
        }

        @Override
        public void onError(MsalException exception) {
        }

        @Override
        public void onCancel() {
        }
    };
}

此外,您可以获得iod、expiration time(exp)、auth time(auth_time)和versiov(ver)

相关问题 更多 >

    热门问题