Мы пытаемся выйти из сеанса 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
Форум для тех, кто программирует под Android
1728049740
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
}
}
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79053995/how-can-we-properly-log-out-from-an-openid-connect-oidc-session-users-are-abl[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия