Мы пытаемся выйти из сеанса 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
Как правильно выйти из сеанса OpenID Connect (OIDC)? Пользователи могут автоматически входить в систему без повторного в ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как получить конфигурацию OpenId Connect из URL-адреса ./well-known/openid-connect в OWIN?
Anonymous » » в форуме C# - 0 Ответы
- 27 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Ищите образец приложения для одного страницы, которое поддерживает вход OIDC OIDC OIDC
Anonymous » » в форуме Javascript - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-