Как правильно выйти из сеанса OpenID Connect (OIDC)? Пользователи могут автоматически входить в систему без повторного вAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как правильно выйти из сеанса OpenID Connect (OIDC)? Пользователи могут автоматически входить в систему без повторного в

Сообщение Anonymous »

Мы пытаемся выйти из сеанса OpenID Connect (OIDC), но сохраненный сеанс браузера позволяет пользователям автоматически входить в систему без необходимости ввода своих учетных данных. Нам необходимо убедиться, что процесс выхода из системы эффективно очищает сеанс, чтобы пользователи должны были проходить аутентификацию каждый раз, когда они входят в систему.
Мы пытаемся очистить файлы cookie, локальное хранилище и данные приложений. для полного завершения сеанса.
Для авторизации мы сделали это:
private fun loginWithOHId() {
val serviceConfig=AuthorizationServiceConfiguration(Uri.parse(authorizationEndpoint), Uri.parse(tokenEndpoint))
authState=AuthState(serviceConfig)
val authRequestBuilder=AuthorizationRequest.Builder(serviceConfig, Client_id, ResponseTypeValues.CODE, MY_REDIRECT_URI)
val authRequest=authRequestBuilder.setScope("OIDScopeOpenID, OIDScopeProfile, OIDScopeEmail, openid").build()
doAuthorization(authRequest)
}

private fun doAuthorization(authRequest: AuthorizationRequest) {
val authService=this.context?.let {
AuthorizationService(it)
}

val authIntent=authService?.getAuthorizationRequestIntent(authRequest)
startForResult.launch(authIntent)
}

private val startForResult =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult ->
if (result.resultCode == Activity.RESULT_OK) {
val intent = result.data
val authService = this.context?.let { AuthorizationService(it) }
val resp = intent?.let { AuthorizationResponse.fromIntent(it) }

val ex = AuthorizationException.fromIntent(intent)
authState?.update(resp, ex)
val clientAuth: ClientAuthentication =
ClientSecretBasic(RESTConstants.getAppAuthClientSecret())

resp?.createTokenExchangeRequest()?.let { tokenRequest ->
authService?.performTokenRequest(
tokenRequest, clientAuth
) { resp, _ ->
if (resp != null) {
authState?.update(resp, ex)
authState?.lastTokenResponse?.let { tokenResponse ->
tokenResponse.idToken?.let { token ->
JWTUtils().decoded(token)?.let { subResponse ->
subResponse.sub?.let { sub ->
if (context?.let { it1 -> isConnected(it1) } == false) {
context?.let { it1 -> NetworkUtils(it1).onNoInternetConnection() }

} else {
//sign in code.
}

}
}
}
}
// exchange succeeded
} else {
toast("Authorization failed")
// authorization failed, check ex for more details
}
}
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/790 ... rs-are-abl
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»