gluu
公開メンバ関数 | 公開変数類 | 全メンバ一覧
twilio2FA.PersonAuthentication クラス
twilio2FA.PersonAuthentication の継承関係図
Inheritance graph
twilio2FA.PersonAuthentication 連携図
Collaboration graph

公開メンバ関数

def __init__ (self, currentTimeMillis)
 
def init (self, configurationAttributes)
 
def destroy (self, configurationAttributes)
 
def getApiVersion (self)
 
def isValidAuthenticationMethod (self, usageType, configurationAttributes)
 
def getAlternativeAuthenticationMethod (self, usageType, configurationAttributes)
 
def authenticate (self, configurationAttributes, requestParameters, step)
 
def prepareForStep (self, configurationAttributes, requestParameters, step)
 
def getExtraParametersForStep (self, configurationAttributes, step)
 
def getCountAuthenticationSteps (self, configurationAttributes)
 
def getPageForStep (self, configurationAttributes, step)
 
def logout (self, configurationAttributes, requestParameters)
 

公開変数類

 currentTimeMillis
 
 ACCOUNT_SID
 
 AUTH_TOKEN
 
 FROM_NUMBER
 

詳解

構築子と解体子

◆ __init__()

def twilio2FA.PersonAuthentication.__init__ (   self,
  currentTimeMillis 
)
24  def __init__(self, currentTimeMillis):
25  self.currentTimeMillis = currentTimeMillis
26 

関数詳解

◆ authenticate()

def twilio2FA.PersonAuthentication.authenticate (   self,
  configurationAttributes,
  requestParameters,
  step 
)
71  def authenticate(self, configurationAttributes, requestParameters, step):
72  userService = CdiUtil.bean(UserService)
73  authenticationService = CdiUtil.bean(AuthenticationService)
74 
75  identity = CdiUtil.bean(Identity)
76  session_attributes = identity.getSessionId().getSessionAttributes()
77 
78  form_passcode = ServerUtil.getFirstValue(requestParameters, "passcode")
79  form_name = ServerUtil.getFirstValue(requestParameters, "TwilioSmsloginForm")
80 
81  print "TwilioSMS. form_response_passcode: %s" % str(form_passcode)
82 
83  if step == 1:
84  print "TwilioSMS. Step 1 Password Authentication"
85  identity = CdiUtil.bean(Identity)
86  credentials = identity.getCredentials()
87 
88  user_name = credentials.getUsername()
89  user_password = credentials.getPassword()
90 
91  logged_in = False
92  if StringHelper.isNotEmptyString(user_name) and StringHelper.isNotEmptyString(user_password):
93  logged_in = authenticationService.authenticate(user_name, user_password)
94 
95  if not logged_in:
96  return False
97 
98  # Get the Person's number and generate a code
99  foundUser = None
100  try:
101  foundUser = authenticationService.getAuthenticatedUser()
102  except:
103  print 'TwilioSMS, Error retrieving user %s from LDAP' % (user_name)
104  return False
105 
106  try:
107  isVerified = foundUser.getAttribute("phoneNumberVerified")
108  if isVerified:
109  mobile_number = foundUser.getAttribute("employeeNumber")
110  if mobile_number == None:
111  mobile_number = foundUser.getAttribute("mobile")
112  if mobile_number == None:
113  mobile_number = foundUser.getAttribute("telephoneNumber")
114  if mobile_number == None:
115  print "TwilioSMS, Error finding mobile number for user '%'" % user_name
116 
117  except:
118  print 'TwilioSMS, Error finding mobile number for' % (user_name)
119  return False
120 
121  # Generate Random six digit code and store it in array
122  code = random.randint(100000, 999999)
123 
124  # Get code and save it in LDAP temporarily with special session entry
125  identity.setWorkingParameter("code", code)
126 
127  try:
128  Twilio.init(self.ACCOUNT_SID, self.AUTH_TOKEN);
129  message = Message.creator(PhoneNumber(mobile_number), PhoneNumber(self.FROM_NUMBER), str(code)).create();
130 
131  print 'TwilioSMs, Message Sid: %s' % (message.getSid())
132  return True
133  except Exception, ex:
134  print "TwilioSMS. Error sending message to Twilio"
135  print "TwilioSMS. Unexpected error:", ex
136 
137  return False
138  elif step == 2:
139  # Retrieve the session attribute
140  print "TwilioSMS. Step 2 SMS/OTP Authentication"
141  code = session_attributes.get("code")
142  print "TwilioSMS. Code: %s" % str(code)
143 
144  if code is None:
145  print "TwilioSMS. Failed to find previously sent code"
146  return False
147 
148  if form_passcode is None:
149  print "TwilioSMS. Passcode is empty"
150  return False
151 
152  if len(form_passcode) != 6:
153  print "TwilioSMS. Passcode from response is not 6 digits: %s" % form_passcode
154  return False
155 
156  if form_passcode == code:
157  print "TiwlioSMS, SUCCESS! User entered the same code!"
158  return True
159 
160  print "TwilioSMS. FAIL! User entered the wrong code! %s != %s" % (form_passcode, code)
161 
162  return False
163 
164  print "TwilioSMS. ERROR: step param not found or != (1|2)"
165 
166  return False
167 

◆ destroy()

def twilio2FA.PersonAuthentication.destroy (   self,
  configurationAttributes 
)
57  def destroy(self, configurationAttributes):
58  print "Twilio SMS. Destroy"
59  print "Twilio SMS. Destroyed successfully"
60  return True
61 

◆ getAlternativeAuthenticationMethod()

def twilio2FA.PersonAuthentication.getAlternativeAuthenticationMethod (   self,
  usageType,
  configurationAttributes 
)
68  def getAlternativeAuthenticationMethod(self, usageType, configurationAttributes):
69  return None
70 

◆ getApiVersion()

def twilio2FA.PersonAuthentication.getApiVersion (   self)
62  def getApiVersion(self):
63  return 1
64 

◆ getCountAuthenticationSteps()

def twilio2FA.PersonAuthentication.getCountAuthenticationSteps (   self,
  configurationAttributes 
)
184  def getCountAuthenticationSteps(self, configurationAttributes):
185  return 2
186 

◆ getExtraParametersForStep()

def twilio2FA.PersonAuthentication.getExtraParametersForStep (   self,
  configurationAttributes,
  step 
)
178  def getExtraParametersForStep(self, configurationAttributes, step):
179  if step == 2:
180  return Arrays.asList("code")
181 
182  return None
183 

◆ getPageForStep()

def twilio2FA.PersonAuthentication.getPageForStep (   self,
  configurationAttributes,
  step 
)
187  def getPageForStep(self, configurationAttributes, step):
188  if step == 2:
189  return "/auth/twiliosms/twiliosms.xhtml"
190 
191  return ""
192 

◆ init()

def twilio2FA.PersonAuthentication.init (   self,
  configurationAttributes 
)
27  def init(self, configurationAttributes):
28  print "Twilio SMS. Initialization"
29 
30  self.ACCOUNT_SID = None
31  self.AUTH_TOKEN = None
32  self.FROM_NUMBER = None
33 
34  # Get Custom Properties
35  try:
36  self.ACCOUNT_SID = configurationAttributes.get("twilio_sid").getValue2()
37  except:
38  print 'TwilioSMS, Missing required configuration attribute "twilio_sid"'
39 
40  try:
41  self.AUTH_TOKEN = configurationAttributes.get("twilio_token").getValue2()
42  except:
43  print'TwilioSMS, Missing required configuration attribute "twilio_token"'
44  try:
45  self.FROM_NUMBER = configurationAttributes.get("from_number").getValue2()
46  except:
47  print'TwilioSMS, Missing required configuration attribute "from_number"'
48 
49  if None in (self.ACCOUNT_SID, self.AUTH_TOKEN, self.FROM_NUMBER):
50  print "twilio_sid, twilio_token, from_number is empty ... returning False"
51  return False
52 
53  print "Twilio SMS. Initialized successfully"
54 
55  return True
56 

◆ isValidAuthenticationMethod()

def twilio2FA.PersonAuthentication.isValidAuthenticationMethod (   self,
  usageType,
  configurationAttributes 
)
65  def isValidAuthenticationMethod(self, usageType, configurationAttributes):
66  return True
67 

◆ logout()

def twilio2FA.PersonAuthentication.logout (   self,
  configurationAttributes,
  requestParameters 
)
193  def logout(self, configurationAttributes, requestParameters):
194  return True
195 

◆ prepareForStep()

def twilio2FA.PersonAuthentication.prepareForStep (   self,
  configurationAttributes,
  requestParameters,
  step 
)
168  def prepareForStep(self, configurationAttributes, requestParameters, step):
169  if step == 1:
170  print "TwilioSMS. Prepare for Step 1"
171  return True
172  elif step == 2:
173  print "TwilioSMS. Prepare for Step 2"
174  return True
175 
176  return False
177 

メンバ詳解

◆ ACCOUNT_SID

twilio2FA.PersonAuthentication.ACCOUNT_SID

◆ AUTH_TOKEN

twilio2FA.PersonAuthentication.AUTH_TOKEN

◆ currentTimeMillis

twilio2FA.PersonAuthentication.currentTimeMillis

◆ FROM_NUMBER

twilio2FA.PersonAuthentication.FROM_NUMBER

このクラス詳解は次のファイルから抽出されました: