You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
147 lines
4.9 KiB
147 lines
4.9 KiB
//==================================================
|
|
//
|
|
// Copyright 2017 Siemens Product Lifecycle Management Software Inc. All Rights Reserved.
|
|
//
|
|
//==================================================
|
|
|
|
|
|
|
|
using System;
|
|
using System.IO;
|
|
|
|
using Teamcenter.Schemas.Soa._2006_03.Exceptions;
|
|
using Teamcenter.Soa;
|
|
using Teamcenter.Soa.Common;
|
|
using Teamcenter.Soa.Client;
|
|
using Teamcenter.Soa.Exceptions;
|
|
|
|
namespace Teamcenter.ClientX
|
|
{
|
|
|
|
/**
|
|
* The CredentialManager is used by the Teamcenter Services framework to get the
|
|
* user's credentials when challanged by the server. This can occur after a period
|
|
* of inactivity and the server has timed-out the user's session, at which time
|
|
* the client application will need to re-authenitcate. The framework will
|
|
* call one of the getCredentials methods (depending on circumstances) and will
|
|
* send the SessionService.login service request. Upon successfull completion of
|
|
* the login service request. The last service request (one that cuased the challange)
|
|
* will be resent.
|
|
*
|
|
* The framework will also call the setUserPassword setGroupRole methods when ever
|
|
* these credentials change, thus allowing this implementation of the CredentialManager
|
|
* to cache these values so prompting of the user is not requried for re-authentication.
|
|
*
|
|
*/
|
|
public class AppXCredentialManager : CredentialManager
|
|
{
|
|
|
|
private String name = null;
|
|
private String password = null;
|
|
private String group = ""; // default group
|
|
private String role = ""; // default role
|
|
private String discriminator = "SoaAppX"; // always connect same user
|
|
// to same instance of server
|
|
|
|
/**
|
|
* Return the type of credentials this implementation provides,
|
|
* standard (user/password) or Single-Sign-On. In this case
|
|
* Standard credentials are returned.
|
|
*
|
|
* @see com.teamcenter.soa.client.CredentialManager#getCredentialType()
|
|
*/
|
|
public int CredentialType
|
|
{
|
|
get { return SoaConstants.CLIENT_CREDENTIAL_TYPE_STD; }
|
|
}
|
|
|
|
/**
|
|
* Prompt's the user for credentials.
|
|
* This method will only be called by the framework when a login attempt has
|
|
* failed.
|
|
*
|
|
* @see com.teamcenter.soa.client.CredentialManager#getCredentials(com.teamcenter.schemas.soa._2006_03.exceptions.InvalidCredentialsException)
|
|
*/
|
|
public string[] GetCredentials(InvalidCredentialsException e)
|
|
//throws CanceledOperationException
|
|
{
|
|
Console.WriteLine(e.Message);
|
|
return PromptForCredentials();
|
|
}
|
|
|
|
/**
|
|
* Return the cached credentials.
|
|
* This method will be called when a service request is sent without a valid
|
|
* session ( session has expired on the server).
|
|
*
|
|
* @see com.teamcenter.soa.client.CredentialManager#getCredentials(com.teamcenter.schemas.soa._2006_03.exceptions.InvalidUserException)
|
|
*/
|
|
public String[] GetCredentials(InvalidUserException e)
|
|
//throws CanceledOperationException
|
|
{
|
|
// Have not logged in yet, shoult not happen but just in case
|
|
if (name == null) return PromptForCredentials();
|
|
|
|
// Return cached credentials
|
|
String[] tokens = { name, password, group, role, discriminator };
|
|
return tokens;
|
|
}
|
|
|
|
/**
|
|
* Cache the group and role
|
|
* This is called after the SessionService.setSessionGroupMember service
|
|
* operation is called.
|
|
*
|
|
* @see com.teamcenter.soa.client.CredentialManager#setGroupRole(java.lang.String,
|
|
* java.lang.String)
|
|
*/
|
|
public void SetGroupRole(String group, String role)
|
|
{
|
|
this.group = group;
|
|
this.role = role;
|
|
}
|
|
|
|
/**
|
|
* Cache the User and Password
|
|
* This is called after the SessionService.login service operation is called.
|
|
*
|
|
* @see com.teamcenter.soa.client.CredentialManager#setUserPassword(java.lang.String,
|
|
* java.lang.String, java.lang.String)
|
|
*/
|
|
public void SetUserPassword(String user, String password, String discriminator)
|
|
{
|
|
this.name = user;
|
|
this.password = password;
|
|
this.discriminator = discriminator;
|
|
}
|
|
|
|
|
|
public String[] PromptForCredentials()
|
|
//throws CanceledOperationException
|
|
{
|
|
try
|
|
{
|
|
Console.WriteLine("Please enter user credentials (return to quit):");
|
|
Console.Write("User Name: ");
|
|
name = Console.ReadLine();
|
|
|
|
if (name.Length == 0)
|
|
throw new CanceledOperationException("");
|
|
|
|
Console.Write("Password: ");
|
|
password = Console.ReadLine();
|
|
}
|
|
catch (IOException e)
|
|
{
|
|
String message = "Failed to get the name and password.\n" + e.Message;
|
|
Console.WriteLine(message);
|
|
throw new CanceledOperationException(message);
|
|
}
|
|
|
|
String[] tokens = { name, password, group, role, discriminator };
|
|
return tokens;
|
|
}
|
|
|
|
}
|
|
}
|