本文整理匯總了Python中linotp.lib.challenges.Challenges.finish_challenges方法的典型用法代碼示例。如果您正苦於以下問題:Python Challenges.finish_challenges方法的具體用法?Python Challenges.finish_challenges怎麽用?Python Challenges.finish_challenges使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類linotp.lib.challenges.Challenges
的用法示例。
在下文中一共展示了Challenges.finish_challenges方法的5個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: finish_valid_tokens
# 需要導入模塊: from linotp.lib.challenges import Challenges [as 別名]
# 或者: from linotp.lib.challenges.Challenges import finish_challenges [as 別名]
def finish_valid_tokens(self):
"""
processing of the valid tokens
"""
valid_tokens = self.valid_tokens
validation_results = self.validation_results
user = self.user
if len(valid_tokens) == 1:
token = valid_tokens[0]
if user:
action_detail = ("user %[email protected]%r successfully authenticated."
% (user.login, user.realm))
else:
action_detail = ("serial %r successfully authenticated."
% token.getSerial())
log.info(action_detail)
# there could be a match in the window ahead,
# so we need the last valid counter here
(counter, _reply) = validation_results[token.getSerial()]
token.setOtpCount(counter + 1)
token.statusValidationSuccess()
# finish as well related open challenges
Challenges.finish_challenges(token, success=True)
if token.getFromTokenInfo('count_auth_success_max', default=None):
auth_count = token.get_count_auth_success()
token.set_count_auth_success(auth_count + 1)
detail = None
auth_info = self.options.get('auth_info', 'False')
if auth_info.lower() == "true":
detail = token.getAuthDetail()
return (True, detail, action_detail)
else:
# we have to set the matching counter to prevent replay one one
# single token
for token in valid_tokens:
(res, _reply) = validation_results[token.getSerial()]
token.setOtpCount(res)
context['audit']['action_detail'] = "Multiple valid tokens found!"
if user:
log.error("[__checkTokenList] multiple token match error: "
"Several Tokens matching with the same OTP PIN "
"and OTP for user %r. Not sure how to auth",
user.login)
raise UserError("multiple token match error", id=-33)
示例2: finish_pin_matching_tokens
# 需要導入模塊: from linotp.lib.challenges import Challenges [as 別名]
# 或者: from linotp.lib.challenges.Challenges import finish_challenges [as 別名]
def finish_pin_matching_tokens(self):
"""
check, if there have been some tokens
where the pin matched (but OTP failed
and increment only these
"""
pin_matching_tokens = self.pin_matching_tokens
action_detail = "wrong otp value"
for tok in pin_matching_tokens:
tok.statusValidationFail()
tok.inc_count_auth()
Challenges.finish_challenges(tok, success=False)
return (False, None, action_detail)
示例3: finish_invalid_tokens
# 需要導入模塊: from linotp.lib.challenges import Challenges [as 別名]
# 或者: from linotp.lib.challenges.Challenges import finish_challenges [as 別名]
def finish_invalid_tokens(self):
"""
"""
invalid_tokens = self.invalid_tokens
user = self.user
for tok in invalid_tokens:
tok.statusValidationFail()
Challenges.finish_challenges(tok, success=False)
import linotp.lib.policy
pin_policies = linotp.lib.policy.get_pin_policies(user) or []
if 1 in pin_policies:
action_detail = "wrong user password -1"
else:
action_detail = "wrong otp pin -1"
return (False, None, action_detail)
示例4: finish_invalid_tokens
# 需要導入模塊: from linotp.lib.challenges import Challenges [as 別名]
# 或者: from linotp.lib.challenges.Challenges import finish_challenges [as 別名]
def finish_invalid_tokens(self):
"""
"""
invalid_tokens = self.invalid_tokens
user = self.user
for tok in invalid_tokens:
# count all token accesses
if tok.count_auth_max > 0:
tok.inc_count_auth()
tok.statusValidationFail()
Challenges.finish_challenges(tok, success=False)
pin_policies = get_pin_policies(user) or []
if 1 in pin_policies:
action_detail = "wrong user password -1"
else:
action_detail = "wrong otp pin -1"
return (False, None, action_detail)
示例5: finish_valid_tokens
# 需要導入模塊: from linotp.lib.challenges import Challenges [as 別名]
# 或者: from linotp.lib.challenges.Challenges import finish_challenges [as 別名]
def finish_valid_tokens(self):
"""
processing of the valid tokens
"""
valid_tokens = self.valid_tokens
validation_results = self.validation_results
user = self.user
if len(valid_tokens) == 1:
token = valid_tokens[0]
if user:
action_detail = ("user %[email protected]%r successfully authenticated."
% (user.login, user.realm))
else:
action_detail = ("serial %r successfully authenticated."
% token.getSerial())
log.info(action_detail)
# there could be a match in the window ahead,
# so we need the last valid counter here
(counter, _reply) = validation_results[token.getSerial()]
token.setOtpCount(counter + 1)
token.statusValidationSuccess()
# finish as well related open challenges
Challenges.finish_challenges(token, success=True)
if token.count_auth_success_max > 0:
token.inc_count_auth_success()
if token.count_auth_max > 0:
token.inc_count_auth()
detail = None
auth_info = self.options.get('auth_info', 'False')
if auth_info.lower() == "true":
detail = token.getAuthDetail()
# 1. check if token supports offline at all
supports_offline_at_all = token.supports_offline_mode
# 2. check if policy allows to use offline authentication
if user is not None and user.login and user.realm:
realms = [user.realm]
else:
realms = token.getRealms()
offline_is_allowed = supports_offline(realms, token)
# 3. check if parameter 'use_offline' is provided
use_offline_param = self.options.get('use_offline', 'False')
use_offline = use_offline_param.lower() == 'true'
if supports_offline_at_all and \
offline_is_allowed and \
use_offline:
offline_info = token.getOfflineInfo()
if detail is None:
detail = {}
offline = {'serial': token.getSerial(), 'type': token.type}
offline['offline_info'] = offline_info
detail.update({'offline': offline})
janitor_to_remove_enrollment_token(valid_tokens=[token])
return (True, detail, action_detail)
else:
# we have to set the matching counter to prevent replay one one
# single token
for token in valid_tokens:
(res, _reply) = validation_results[token.getSerial()]
token.setOtpCount(res)
# in case of multiple matches the tokens were accessed
# so we count them as well
if token.count_auth_max > 0:
token.inc_count_auth()
janitor_to_remove_enrollment_token(valid_tokens=valid_tokens)
context['audit']['action_detail'] = "Multiple valid tokens found!"
if user:
log.error("multiple token match error: "
"Several Tokens matching with the same OTP PIN "
"and OTP for user %r. Not sure how to auth",
user.login)
raise UserError("multiple token match error", id=-33)