text:
A Review of the Grizzly Steppe (Russian Hacking) Report
I, like many, have heard the stories that the Russians hacked into sensitive applications/servers in an effort to compromise the US elections. That is a bold statement and if true, may justify the actions recently taken by the Obama administration. So it was with keen interest that I rushed to read the findings from the Joint Analysis Report (JAR-16-20296) between DHS and the FBI to see what evidence they had to substantiate these claims.
The full report may be found here:
The report makes the following claims:
"This document provides technical details regarding the tools and infrastructure used by the Russian civilian and military intelligence Services (RIS) to compromise and exploit networks and endpoints associated with the U.S. election…"
"Previous JARs have not attributed malicious cyber activity to specific countries or threat actors. However, public attribution of these activities to RIS is supported by technical indicators from the U.S. Intelligence Community, DHS, FBI, the private sector, and other entities."
Based on this information the US felt like it had the smoking gun and definitive proof of the following:
- The Who – the Russians were behind the attack
- The Why – to affect the US elections in order to guide the outcome
With this information in hand, I continued reading to now learn about:
- The How – how the attacks were performed
- The Proof – the evidence to substantiate Who, Why, and How
The report describes the "How" in a two pronged attack as follows:
Hack #1 – Casting the Phish Net…
1. A general spearphishing attack was sent to more than 1,000 people which included (in addition to others) several people from the U.S. Government.
Note: The number "1,000" is very specific so it seems like the government has some knowledge of the recipients – but they stop short of specifying if that 1,000 was directed at a particular party or not. I would think that would be important to know if the purpose of the attack was to affect the US election.
2. The attack led to one person from a particular U.S. political party falling prey to the attack and opening an attachment containing malware. This led to a chain of events where the malware was able to:
- Establish persistence on a "political party system"
- "Escalate privileges"
- "Enumerate Active Directory accounts"
- "Exfiltrate email from several accounts through encrypted connections back through operational infrastructure"
Note: This all sounds really impressive, but what does it all mean? If you remove all the jargon (enumerate, exfiltrate, etc.) and put this in layman's terms, it sounds like the following occurred:
- Someone installed malware on their PC when they opened a file that they shouldn't have
- Somehow the malware was able to gain privileged access to Active Directory
- The malware was able to perform a search against Active Directory
- The results of the search returned several email accounts
With this information on mind, there are a few things I am curious about.
First, the malware is only able to impersonate the user on the operating system on which it was installed. I'm not sure how a "normal user" can have escalated privileges in Active Directory unless that user is an administrator with escalated privileges (which brings up a whole different conversation about administrators knowing better). So I am curious how the malware was able to "escalate privileges" on its own.
Second, if the user (hence the malware) was not an administrator and they were able to perform an unauthorized search against Active Directory, then that indicates that Active Directory authorization and/or limitations were not configured properly. It has been my experience that Active Directory is (by default) pretty well locked down. Is it possible that the default settings were "relaxed" a bit and therefore may have opened up a hole?
Finally, would I really need "escalated privileges" just to troll email accounts? Couldn't I simply scan the Outlook address book to obtain this information? It seems like the approach described in the report would take a lot of effort to code and would have a limited chance of success. Wouldn't the malware have to land on an administrator's computer for this approach to work?
3. Either way, the end result was that APT29 was able to get a list of email addresses from Active Directory.
Fast forward almost a year later (summer 2015 to spring 2016) and this takes us to the second part of our story.
Hack #2 – Hooking the Phish…
1. In the second hack, a targeted spearphishing attack was launched against the same political party that was compromised in the first attack.
Note: It should be noted that while the first attach was general (casting a net if you will), the second attack was targeted at a certain set of people using specific information to more easily trick those people. While the report doesn't specifically say this, it is assumed that the attack targeted those email addresses that were obtained from the first attack.
Does this indicate that the political party in question was targeted because the end goal was to affect the election? If so, then this attack was planned almost a year in advance when we really didn't have a clear picture as to who the candidates would be from either party. Were the Russians hedging their bets in case a certain party (or a certain candidate) was found to be leading? It seems more plausible that the second attack was launched more against a certain set of users more as a target of opportunity than anything else.
2. This spearphishing attack tricked multiple people into "changing their passwords through a fake webmail domain hosted by APT28".
3. Upon initial login, APT28 was able to obtain the "real" credentials of users associated with the political party in question.
4. With these credentials in hand, APT28 was able to log into the real email server and access content (emails, attachments, etc.). The report goes on to say that this information was subsequently "leaked to the press and publicly disclosed."
Where's the Smoking Gun?
While the report is somewhat interesting, it does not provide the "smoking gun" that was anticipated. The report does provide a list of 48 hacker names of which APT28 and APT29 are included. The title of the table is "Reported Russian Military and Civilian Intelligence Services (RIS)" but there is nothing more than that to introduce the table and tell us anything about the names contained in the table. Am I supposed to jump to the conclusion that because APT28 and APT29 are listed that this is definitive proof that:
- they are the ones behind these attacks
- no one else has attempted to use these names as their hacking alias
- they specifically targeted a particular political party
- their intent was to affect the US election
- and most importantly, they are "state sponsored"
The last item is one of the most important as the administration has chosen to take action against Russia (the state) as if they sanctioned the attacks. If that is true then the need for a smoking gun becomes infinitely more important and that information is simply not provided. Going back to a statement made early on in the report,
"Previous JARs have not attributed malicious cyber activity to specific countries or threat actors. However, public attribution of these activities to RIS is supported by technical indicators from the U.S. Intelligence Community, DHS, FBI, the private sector, and other entities."
the government has made it clear that it is stepping outside of normal protocol by publicly naming the attacker in the JAR. But they don't provide any information to back up their claim. Nor is there anything specifically that indicates that this had anything to do with an attempt to affect the outcome of the US election; in fact, the information presented may lead one to believe the contrary.
In general, the report lacks information and forces us to accept the government's assertion of the Who (the Russians) and the Why (to affect the election) without providing the Proof. Maybe the government has more information that they are not sharing, but to ask me to simply trust without verifying is asking me to trust too much.
Performing Bulk Operations in OpenIDM
OpenIDM does not support bulk operations out of the box. One way to to do this, however, is to obtain a list of IDs that you want to perform an operation on and then loop through the list performing the desired operation on each ID.
Yes this is a hack, but let's be honest, isn't life just one big set of hacks when you think about it?
Here are the steps.
Suppose for instance that you want to delete all managed users in OpenIDM that have a last name of "Nelson". The first step is to obtain a list of those users; which you can easily do using a cURL command and an OpenIDM filter as follows:
curl -u openidm-admin:openidm-admin 'http://localhost:8080/openidm/managed/user?_queryFilter=(sn+eq+"Nelson")&_fields=_id&_prettyPrint=true'
This returns a listing of all managed objects that match the filter as follows.
{ "result" : [ { "_id" : "ed979deb-2da2-4fe1-a309-2b7e9677d931", "_rev" : "5" }, { "_id" : "581c2e13-d7c4-4fff-95b8-2d1686ef5b9c", "_rev" : "1" }, { "_id" : "1295d5db-c6f8-4108-9842-06c4cde0d4eb", "_rev" : "3" } ], "resultCount" : 3, "pagedResultsCookie" : null, "totalPagedResultsPolicy" : "NONE", "totalPagedResults" : -1, "remainingPagedResults" : -1 }
But most of the data returned is extraneous for the purposes of this exercise; we only want the "_id" values for these users and to obtain this information, you can pipe the output into a grep command and redirect the output to a file as follows:
curl -u openidm-admin:openidm-admin 'http://localhost:8080/openidm/managed/user?_queryFilter=(sn+eq+"Nelson")&_fields=_id&_prettyPrint=true' | grep "_id" >> bulkOperationIDs.txt
This will produce a file that looks like this:
"_id": "ed979deb-2da2-4fe1-a309-2b7e9677d931", "_id": "581c2e13-d7c4-4fff-95b8-2d1686ef5b9c", "_id": "1295d5db-c6f8-4108-9842-06c4cde0d4eb"
(yes, there are leading spaces in that output).
You are still not done yet as you need to strip off all the extraneous stuff and get it down to just the values of the "_id" attribute. You can probably devise a cool sed script, or find an awesome regular expression for the grep command, but it is just as easy to simply edit the file with and perform a couple global search/replace operations:
:1,$ s/ "_id": "//g
:1,$ s/",//g
The above example demonstrates a global search/replace operation in the "vi" editor – the best damn editor on God's green earth!
However you approach it, the goal is to get the file to consist of only the IDs as follows:
ed979deb-2da2-4fe1-a309-2b7e9677d931 581c2e13-d7c4-4fff-95b8-2d1686ef5b9c 1295d5db-c6f8-4108-9842-06c4cde0d4eb
Now that you have this file, you can perform any operation you would like on it using a simple command line script tied into the appropriate cURL command. For instance, the following would perform a GET operation on all entries in the file (it is HIGHLY recommended that you do this before jumping right into a DELETE operation):
for i in `cat bulkOperationIDs.txt`; do curl -u openidm-admin:openidm-admin -X GET "http://localhost:8080/openidm/managed/user/$i?_prettyPrint=true"; done
Once you feel comfortable with the response, you can change the GET operation to a DELETE and kick the Nelsons to the proverbial curb.
Configuring OpenIDM on a Read Only File System in 10 Easy Steps
During the normal course of events, OpenIDM writes or updates various files on the file system to which it is installed. This includes log files, audit files, process IDs, configuration files, or even cached information. There are times, however when you find yourself needing to deploy OpenIDM to a read only file system – one to which you cannot write typical data.
Fortunately, OpenIDM is flexible enough to allow such an installation, you just need to make some adjustments to various settings to accommodate this.
The following information provides details on how to configure OpenIDM on a read only file system. It includes the types of information that OpenIDM writes by default, where it writes the information, and how you can alter the default behavior – and it does it in just 10 EASY Steps (and not all of them are even required!).
Note: The following steps assume that you have a shared (mounted) folder at /idm, that you are using OpenIDM 4.0, it is running as the frock user, and that the frock user has write access to the /idm folder.
1. Create external folder structure for logging, auditing, and internal repository information.
$ sudo mkdir -p /idm/log/openidm/audit
$ sudo mkdir /idm/log/openidm/logs
$ sudo mkdir -p /idm/cache/openidm/felix-cache
$ sudo mkdir /idm/run/openidm
2. Change ownership of the external folders to the "idm" user.
$ sudo chown -R frock:frock /idm/log/openidm
$ sudo chown -R frock:frock /idm/cache/openidm
$ sudo chown -R frock:frock /idm/run/openidm
Note: OpenIDM writes its audit data (recon, activity, access, etc.) to two locations by default: the filesystem and the repo. This is configured in the conf/audit.json file.
3. Open the conf/audit.json file and verify that OpenIDM is writing its audit data to the repo as follows (note: this is the default setting):
"handlerForQueries" : "repo",
4. Open the conf/audit.json file and redirect the audit data to the external folder as follows:
"config" : {
"logDirectory" : "/idm/log/openidm/audit"
After making these changes, this section of the audit.json will appear as follows (see items in bold font):
"auditServiceConfig" : {
"handlerForQueries" : "repo",
"availableAuditEventHandlers" : [
"eventHandlers" : [
"name" : "csv",
"class" : "org.forgerock.audit.events.handlers.csv.CsvAuditEventHandler",
"config" : {
"logDirectory" : "/idm/log/openidm/audit"
"topics" : [ "access", "activity", "recon", "sync", "authentication", "config" ]
As an alternate option you can disable the writing of audit data altogether by setting the enabled flag to false for the appropriate event handler(s). The following snippet from the audit.json demonstrates how to disable file-based auditing.
"eventHandlers" : [
"name" : "csv",
"enabled" : false,
"class" : "org.forgerock.audit.events.handlers.csv.CsvAuditEventHandler",
"config" : {
"logDirectory" : "/audit",
"topics" : [ "access", "activity", "recon", "sync", "authentication", "config" ]
Note: OpenIDM writes its logging data to the local filesystem by default. This is configured in the conf/logging.properties file.
5. Open the conf/logging.properties file and redirect OpenIDM logging data to the external folder as follows:
java.util.logging.FileHandler.pattern = /idm/log/openidm/logs/openidm%u.log
Note: OpenIDM caches its Felix files in the felix-cache folder beneath the local installation. This is configured in the conf/config.properties file.
6. Open the conf/config.properties file and perform the following steps:
a. Redirect OpenIDM Felix Cache to the external folder as follows:
# If this value is not absolute, then the felix.cache.rootdir controls
# how the absolute location is calculated. (See buildNext property)
b. Define the relative path to the Felix Cache as follows:
# The following property is used to convert a relative bundle cache
# location into an absolute one by specifying the root to prepend to
# the relative cache path. The default for this property is the
# current working directory.
After making these changes, this section of the config.properties will appear as follows (see items in bold font):
# If this value is not absolute, then the felix.cache.rootdir controls
# how the absolute location is calculated. (See buildNext property)
# The following property is used to convert a relative bundle cache
# location into an absolute one by specifying the root to prepend to
# the relative cache path. The default for this property is the
# current working directory.
Note: During initial startup, OpenIDM generates a self-signed certificate and stores its security information in the keystore and truststore files as appropriate. This is not possible in a read-only file system, however. As such, you should generate a certificate ahead of time and make it part of your own deployment.
7. Update keystore and truststore files with certificate information and an updated password file as appropriate. The process you choose to follow will depend on whether you use a self-signed certificate or obtain one from a certificate authority.
Note: On Linux systems, OpenIDM creates a process ID file (PID file) on startup and removes the file during shutdown. The location of the PID File is defined in both the start script (startup.sh) and the shutdown script (shutdown.sh). The default location of the process ID is $OPENIDM_HOME folder.
8. Open the startup.sh script and update the location of the process ID file by adding the following line immediately after the comments section of the file:
9. Repeat Step 7 with the shutdown.sh script.
Note: OpenIDM reads configuration file changes from the file system by default. If your environment allows you to update these files during the deployment process of a new release, then no additional changes are necessary. However, if you truly have a read only file system (i.e. no changes even to configuration files) then you can disable the monitoring of these configuration files in the next step. Keep in mind, however, that this requires that all configuration changes must then be performed over REST.
10. Open the conf/system.properties file and disable monitoring of JSON and subsequent loading of configuration file changes by uncommenting the following line:
OpenIDM Property Value Substitution
Property value substitution can be a useful technique for customizing OpenIDM deployments across multiple environments.
Assume, for instance, that you have three environments (Development, Test, and Production). Your OpenIDM deployment has been configured for one OpenDJ system resource, but the configuration properties for that resource is different across each environment. The following diagram demonstrates the different host names for the OpenDJ instance in each environment.
In order to accommodate this you would need to maintain three separate provisioner files – one for each environment you are operating in and you would need to manage each file separately under source control.
An alternative, however, is to create OpenIDM variables that customize the OpenDJ configuration parameters based on the environment. The customizations are then centralized in a common file and selected based on settings contained in OpenIDM's environment variables.
Here are the steps necessary to configure OpenIDM property values.
- Stop the OpenIDM instance.
- Edit the conf/boot.properties file and add environment specific variables as follows:
[Where DEV, TEST, and PROD are the OpenIDM environment variables set in OPENIDM_OPTS, odjhost is the name of the property used across the three environments, and the values (i.e. dev.opendj.example.com, test.opendj.example.com, and opendj.example.com) are the environment specific values.]
3. Edit the provisioner file (provisioner.openicf-ODJ.json) and replace the value of the host property as follows:
"configurationProperties" : {
"host" : "&{&{environment}.odjhost}",
"port" : "1389",
Properties are referenced in OpenIDM with the construct, &{property}. When OpenIDM sees these references, it replaces them with the appropriate property value as defined in the boot.properties file. The example shown above demonstrates nesting of property values and assuming that the environment variable is set to a value of TEST in OPENIDM_OPTS, then the substitution occurs from the innermost to the outermost brackets as follows:
You now have a consistent set of configuration files (i.e. boot.properties and provisioner.openicf-ODJ.json) that can be deployed to all three environments (Development, Test, and Production), the only step remaining is to configure OPENIDM_OPTS in each environment. This can be accomplished by setting the environment variable in your /etc/init.d/openidm or openidm/startup.sh scripts as follows:
OPENIDM_OPTS="-Xmx1024m -Xms1024m -Dfile.encoding=UTF-8 –Denvironment=TEST"
4. Start the OpenIDM instance and look for any errors in the openidm0.log.0 log file.
Assuming that everything started without any problems, you can now see that your environment specific parameters have been set correctly by querying the configuration object for OpenDJ, or simply by looking at the connector configuration in the OpenIDM Admin Console as follows.
The Real Reason Oracle Dropped Sun Identity Manager
I always appreciate it when someone attempts to educate others about identity management and related technologies. So when I saw the the following presentation, it quickly caught my attention as I was working with both products when the Oracle deal to purchase Sun went down.
Why Oracle Dropped Waveset Lighthouse and Went to Oracle Identity Manager (OIM)
Not to be too nit picky, but there are quite a few errors in this presentation that I simply couldn't ignore.
- OID is not the acronym for "Oracle Identity Management", it is an acronym for "Oracle Internet Directory" – Oracle's LDAPv3 directory server. OIM is the acronym for "Oracle Identity Manager".
- SIM ("Sun Identity Manager") was not a "suite of identity manager products" as you state. SIM was a data synchronization and provisioning product. SIM was part of the suite of Sun Identity Management products that also included Sun Directory Server Enterprise Edition (SDSEE), Sun Access Manager/OpenSSO, and Sun Role Manager (SRM).
- It is stated that one reason that Oracle did not elect to continue with SIM was because it did not have a Web 2.0 UI. SIM version 9.0 (the version being developed when Oracle purchased Sun) did have a Web 2.0 UI. So this is not quite an accurate representation.
- "Oracle IDM" is Oracle's suite of identity management products which includes Oracle Virtual Directory (OVD), Oracle Identity Directory (OID), Oracle Access Manager (OAM), and Oracle Identity Manager (OIM). The presentation uses "Oracle IDM" (and later, simply "IDM") to refer specifically to Oracle Identity Manager, however. This is both confusing and misleading.
- It is stated that "IDM allowed faster application on-boarding." As an integrator of both OIM and SIM, I can honestly say that this is not a true statement. We could have simple SIM deployments up and running in the order of days/week and a production deployment in a month or two. OIM, consistently took several months to deploy – which was great for a billable professional services firm, but not so great for the customer (who had to pay for those services).
- It is inferred that OIM is able to provision to cloud and SIM was not and that was a reason why Oracle chose to go with OIM. That is a misleading statement as SIM was able to provision to cloud applications as well. SIM also supported SPML (not a big fan, myself) and SCIM for provisioning to other identity platforms and cloud based applications.
The main reasons that Oracle chose to go with OIM versus SIM was simply the deeper integration with Oracle products and their not wanting to alter the Oracle IDM roadmap. I was on the early calls with Oracle when they announced which products they would keep and which products they were getting rid of. During those calls, they had their "politically correct" reasons as well as the "real" reasons and it always came back to these two.
There was only one place where I saw Oracle forced into altering their position and they had to update their roadmap; this was with the SDSEE product. Oracle made it very clear that the only product they wanted in Sun's identity product line was Sun Role Manager (which later became Oracle Identity Analytics). In fact, only a couple weeks after the purchase was made, Oracle had already set an end of life date for all identity products including SDSEE. What Oracle hadn't counted on was how well entrenched that product was across Sun's major customers (including the US Government and major Telcos). It wasn't until the outcry from their customers was raised that Oracle "decided" to continue product development.
Purely from a technology perspective, if you are a company that has deployed a wide array of Oracle products, then it made sense to go with OIM due to the deeper integration with Oracle products, but not so much if you are a heterogenous company. In such cases, I have found other products to be more flexible than OIM and provide a much quicker deployment times at much lower costs.
Configuring OpenIDM Password Reset
ForgeRock OpenIDM is a powerful account management and data synchronization tool that provides many robust features out of the box. Some of these features must be enabled, however, before they can be used. Once such feature allows a user to reset their password in the OpenIDM Web UI by responding to challenge questions.
The OpenIDM Web UI provides an out of the box experience for resetting an OpenIDM user's password based on a user's response to challenge questions. This functionality is disabled by default and must be enabled in the ui-configuration.json file before attempting to perform this operation in the WebUI.
The following instructions describe how to enable this functionality and test the password reset flow and have been tested with OpenIDM version 3.1.0.
Configure Password Reset
1. In a terminal window, change to the OpenIDM configuration folder
$ cd openidm/conf
2. Edit the ui-configuration.json file
3. Modify the value of the "securityQuestions" attribute from "false" to "true" as follows:
{ "configuration" : { "selfRegistration" : false, "securityQuestions" : true, "siteIdentification" : false, "lang" : "en",
4. (OPTIONAL) The minimum length for responses to security questions is 16 characters. This is defined by the securityAnswer policy in the openidm/conf/policy.json file. You can modify the minimum number of characters associated with this policy by editing the minLength parameter in the minimum-length policyID as follows:
"name" : "securityAnswer", "policies" : [ { "policyId" : "required-if-configured", "params" : { "configBase" : "ui/configuration", "baseKey" : "configuration.securityQuestions", "exceptRoles" : [ "system", "openidm-admin" ] } }, { "policyId" : "minimum-length", "params" : { "minLength" : 4 } },
Note: Modifications to files in the conf folder are hot swappable; this means that your changes are now in effect without the need to restart OpenIDM. Assuming you have not made any errors in configuring either of these two files (you can confirm by looking for errors in the openidm/logs/openidm0.log.0 file), then you have now enabled password reset for the WebUI. Before this feature can be used, however, a user must first enter responses to challenge questions.
Enter Responses to Challenge Questions
4. Go to OpenIDM user interface (http://openidm.example.com:8080/openidmui/index.html#login/). You will now see a "Reset your password" link available in the login form.
5. Log in as an existing user (i.e. firstname.lastname@example.com).
6. Select the "Change Security Data" link.
7. Enter your current password in the form provided and select the "Continue" button.
8. Enter and confirm your password in the fields provided.
9. Select a security question and provide an answer in the space provided.
10. Select the "Update" button and then log out of the user interface.
Note: You can now test the password reset functionality.
Test Password Reset Functionality
11. Return to OpenIDM user interface (http://openidm.example.com:8080/openidmui/index.html#login/).
12. Select the "Reset your password link".
13. Enter your username (i.e. firstname.lastname@example.com) and click the "Submit" button.
14. You should see the security question that you selected in step 9 appear. Provide the response that you entered in step 9 and click the "Submit" button.
Note: Case matters!
15. If you responded to your security question properly, then you will now see form elements appear allowing you to enter and confirm a new password.
16. When you click the "Update" button, the new password will be applied to your OpenIDM object and you will be automatically logged in to the end user interface.
OpenDJ and the Fine Art of Impersonation
Directory servers are often used in multi-tier applications to store user profiles, preferences, or other information useful to the application. Oftentimes the web application includes an administrative console to assist in the management of that data; allowing operations such as user creation or password reset. Multi-tier environments pose a challenge, however, as it is difficult to determine the identity of the user that actually performed the operation as opposed to the user that simply showed up in the log file(s).
Consider the relationship between the user logging in to the web application and the interaction between the web application and a directory server such as OpenDJ.
There are two general approaches that many web applications follow when performing actions against the directory server; I will refer to these as Application Access and User Access. In both scenarios, the user must first log in to the web application. Their credentials may be validated directly against the directory server (using local authentication) or they may be accessing the web application using single sign-on. In either pattern, the user must first prove his identity to the web application before they are allowed to perform administrative tasks. The differences become apparent post authentication and can be found in the manner in which the web application integrates with the directory server to perform subsequent administrative tasks.
Note: The following assumes that you are already familiar with OpenDJ access control. If this is not the case, then it is highly advisable that you review the following: OpenDJ Access Control Explained.
Approach 1: Application Access
In the case of the Application Access approach all operations against the directory server are performed as an application owner account configured in the directory server. This account typically has a superset of privileges required by all Web Application administrators in order to perform the tasks required of those users. In this scenario, the Web Application binds to the directory server using its Web Application service account and performs the operation. A quick look in the directory server log files demonstrates that all operations coming from the Web Application are performed by the service account and not the user who logged in to the Web Application.
[27/Mar/2015:16:37:40 +0000] BIND REQ conn=2053 op=0 msgID=1 version=3 type=SIMPLE dn="uid=WebApp1,ou=AppAccounts,dc=example,dc=com"
[27/Mar/2015:16:37:40 +0000] BIND RES conn=2053 op=0 msgID=1 result=0 authDN="uid=WebApp1,ou=AppAccounts,dc=example,dc=com" etime=1
[27/Mar/2015:16:37:40 +0000] SEARCH REQ conn=2053 op=1 msgID=2 base="ou=People,dc=example,dc=com" scope=wholeSubtree filter="(l=Tampa)" attrs="ALL"
[27/Mar/2015:16:37:40 +0000] SEARCH RES conn=2053 op=1 msgID=2 result=0 nentries=69 etime=2
While easiest to configure, one drawback to this approach is that you need to reconcile the directory server log files with the Web Application log files in order to determine the identity of the user performing the action. This makes debugging more difficult. Not all administrators have the same access rights; so another problem with this approach is that entitlements must be maintained and/or recognized in the Web Application and associated with Web Application users. This increases complexity in the Web Application as those relationships must be maintained in yet another database. Finally, some security officers may find this approach to be insecure as the entry appearing in the log files is not indicative of the user performing the actual operation.
Approach 2: User Access
The User Access approach is an alternative where the Web Application impersonates the user when performing operations. Instead of the Web Application binding with a general service account, it takes the credentials provided by the user, crafts a user-specific distinguished name, and then binds to the directory server with those credentials. This approach allows you to manage access control in the directory server and the logs reflect the identity of the user that performed the operation.
[27/Mar/2015:17:01:01 +0000] BIND REQ conn=2059 op=0 msgID=1 version=3 type=SIMPLE dn="uid=bnelson,ou=Administators,dc=example,dc=com"
[27/Mar/2015:17:01:01 +0000] BIND RES conn=2059 op=0 msgID=1 result=0 authDN=" uid=bnelson,ou=Administators,dc=example,dc=com " etime=1
[27/Mar/2015:17:40:40 +0000] SEARCH REQ conn=2059 op=1 msgID=2 base="ou=People,dc=example,dc=com" scope=wholeSubtree filter="(l=Tampa)" attrs="ALL"
[27/Mar/2015:17:40:40 +0000] SEARCH RES conn=2059 op=1 msgID=2 result=0 nentries=69 etime=2
A benefit to this approach is that entitlements can be maintained in the directory server, itself. This reduces the complexity of the application, but requires that you configure appropriate access controls for each user. This can easily be performed at the group level, however, and even dynamically configured based on user attributes. A drawback to this approach is that the Web Application is acting as if they are the user – which they are not. The Browser is essentially the user and the Browser is not connecting directly to the directory server. So while the log files may reflect the user, they are somewhat misleading as the connection will always be from the Web Application. The other problem with this approach is the user's credentials must be cached within the Web Application in order to perform subsequent operations against the directory server. One could argue that you could simply keep the connection between the Web Application and the directory server open, and that is certainly an option, but you would need to keep it open for the user's entire session to prevent them from having to re-authenticate. This could lead to performance problems if you have extended session durations, a large number of administrative users, or a number of concurrent sessions by each administrative user.
Proxy Control – The Hybrid Approach
There are both benefits and drawbacks to each of the previously mentioned approaches, but I would like to offer up an alternative proxy-based approach that is essentially a hybrid between the two. RFC 4370 defines a proxied authorization control (2.16.840.1.1137184.108.40.206) that allows a client (i.e. the Web Application) to request the directory server (i.e. OpenDJ) to perform an operation not based on the access control granted to the client, but based on another identity (i.e. the person logging in to the Web Application).
The proxied authorization control requires a client to bind to the directory server as themselves, but it allows them to impersonate another entry for a specific operation. This control can be used in situations where the application is trusted, but they need to perform operations on behalf of different users. The fact that the client is binding to the directory server eliminates the need to cache the user's credentials (or re-authenticate for each operation). The fact that access is being determined based on that of the impersonated user means that you can centralize entitlements in the directory server and grant access based on security groups. This is essentially the best of both worlds and keeps a smile on the face of your security officer (as if that were possible).
So how do you configure proxy authorization? I am glad you asked.
Configuring Proxied Access
Before configuring proxied access, let's return to the example of performing a search based on Application Access. The following is an example of a command line search that can be used to retrieve information from an OpenDJ server. The search operation uses the bindDN and password of the WebApp1 service account.
./ldapsearch -h localhost -D "uid=WebApp1,ou=AppAccounts,dc=example,dc=com " -w password -b "ou=People,dc=example,dc=com" "l=Tampa"
The response to this search would include all entries that matched the filter (l=Tampa) beneath the container (ou=People). My directory server has been configured with 69 entries that match this search and as such, the OpenDJ access log would contain the following entries:
[27/Mar/2015:16:37:40 +0000] SEARCH REQ conn=2053 op=1 msgID=2 base="ou=People,dc=example,dc=com" scope=wholeSubtree filter="(l=Tampa)" attrs="ALL"
[27/Mar/2015:16:37:40 +0000] SEARCH RES conn=2053 op=1 msgID=2 result=0 nentries=69 etime=2
As previously mentioned, these are the results you would expect to see if the search was performed as the WebApp1 user. So how can you perform a search impersonating another user? The answer lies in the parameters used in the search operation. The LDAP API supports a proxied search, you just need to determine how to access this functionality in your own LDAP client.
Note: I am using ldapsearch as the LDAP client for demonstration purposes. This is a command line tool that is included with the OpenDJ distribution. If you are developing a web application to act as the LDAP client, then you would need to determine how to access this functionality within your own development framework.
The OpenDJ search command includes a parameter that allows you to use the proxy authorization control. Type ./ldapsearch –help to see the options for the ldapsearch command and look for the -Y or –proxyAs parameter as follows.
Now perform the search again, but this time include the proxy control (without making any changes to the OpenDJ server). You will be binding as the WebApp1 account, but using the -Y option to instruct OpenDJ to evaluate ACIs based on the following user: uid=bnelson,ou=People,dc=example,dc=com.
./ldapsearch -h localhost -D "uid=WebApp1,ou=AppAccounts,dc=example,dc=com" -w password –Y "uid=bnelson,ou=People,dc=example,dc=com" -b "ou=People,dc=example,dc=com" "l=Tampa"
You should see the following response:
SEARCH operation failed
Result Code: 123 (Authorization Denied)
Additional Information: You do not have sufficient privileges to use the proxied authorization control The request control with Object Identifier (OID) "2.16.840.1.113718.104.22.168" cannot be used due to insufficient access rights
The corresponding entries in OpenDJ's access log would be as follows:
[27/Mar/2015:10:47:18 +0000] SEARCH REQ conn=787094 op=1 msgID=2 base="ou=People,dc=example,dc=com" scope=wholeSubtree filter="(l=Tampa)" attrs="ALL"
[27/Mar/2015:10:47:18 +0000] SEARCH RES conn=787094 op=1 msgID=2 result=123 message="You do not have sufficient privileges to use the proxied authorization control You do not have sufficient privileges to use the proxied authorization control" nentries=0 etime=1
The key phrase in these messages is the following:
You do not have sufficient privileges to use the proxied authorization control
The key word in that phrase is "privileges" as highlighted above; the WebApp1 service account does not have the appropriate privileges to perform a proxied search and as such, the search operation is rejected. The first step in configuring proxied access control is to grant proxy privileges to the Application Account.
Step 1: Grant Proxy Privileges to the Application Account
The first step in allowing the WebApp1 service account to perform a proxied search is to give that account the proxied-auth privilege. You can use the ldapmodify utility to perform this action as follows:
./ldapmodify -D "cn=Directory Manager" -w password
dn: uid=WebApp1,ou=AppAccounts,dc=example,dc=com
changetype: modify
add: ds-privilege-name
ds-privilege-name: proxied-auth
Processing MODIFY request for uid=WebApp1,ou=AppAccounts,dc=example,dc=com
MODIFY operation successful for DN uid=WebApp1,ou=AppAccounts,dc=example,dc=com
Now repeat the proxied search operation.
./ldapsearch -h localhost -D "uid=WebApp1,ou=AppAccounts,dc=example,dc=com" -w password –Y "uid=bnelson,ou=People,dc=example,dc=com" -b "ou=People,dc=example,dc=com" "l=Tampa"
Once again your search will fail, but this time it is for a different reason.
SEARCH operation failed
Result Code: 12 (Unavailable Critical Extension)
Additional Information: The request control with Object Identifier (OID) "2.16.840.1.1137184.108.40.206" cannot be used due to insufficient access rights
The corresponding entries in OpenDJ's access log would be as follows:
[27/Mar/2015:11:39:17 +0000] SEARCH REQ conn=770 op=1 msgID=2 base=" ou=People,dc=example,dc=com " scope=wholeSubtree filter="(l=Tampa)" attrs="ALL"
[27/Mar/2015:11:39:17 +0000] SEARCH RES conn=770 op=1 msgID=2 result=12 message="" nentries=0 authzDN="uid=bnelson,ou=People,dc=example,dc=com" etime=3
As discussed in OpenDJ Access Control Explained, authorization to perform certain actions may consist of a combination of privileges and ACIs. You have granted the proxied-auth privilege to the WebApp1 service account, but it still needs an ACI to allow it to perform proxy-based operations. For the purposes of this demonstration, we will use the following ACI to grant this permission.
(targetattr="*") (version 3.0; acl "Allow Proxy Authorization to Web App 1 Service Account"; allow (proxy) userdn="ldap:///uid=WebApp1,ou=AppAccounts,dc=example,dc=com";)
This ACI will be placed at the root suffix for ease of use, but you should consider limiting the scope of the ACI by placing it at the appropriate branch in your directory tree (and limiting the targetattr values).
Step 2: Create a (Proxy) ACI for the Application Account
Once again, you can use the ldapmodify utility to update OpenDJ with this new ACI.
./ldapmodify -D "cn=Directory Manager" -w password
dn: dc=example,dc=com
changetype: modify
add: aci
aci: (targetattr="*") (version 3.0; acl "Allow Proxy Authorization to Web App 1 Service Account"; allow (proxy) userdn="ldap:///uid=WebApp1,ou=AppAccounts,dc=example,dc=com";)
Processing MODIFY request for dc=example,dc=com
MODIFY operation successful for DN dc=example,dc=com
Now repeat the proxied search a final time.
./ldapsearch -h localhost -D "uid=WebApp1,ou=AppAccounts,dc=example,dc=com" -w password –Y "uid=bnelson,ou=People,dc=example,dc=com" -b "ou=People,dc=example,dc=com" "l=Tampa"
This time you should see the results of the search performed correctly. But how do you know that this was a proxied search and not simply one performed by the WebApp1 as before? The clue is once again in the OpenDJ access log file. Looking in this file, you will see the following entries:
[27/Mar/2015:11:40:23 +0000] SEARCH REQ conn=797 op=1 msgID=2 base="ou=People,dc=example,dc=com" scope=wholeSubtree filter="(l=Tampa)" attrs="ALL"
[27/Mar/2015:11:40:23 +0000] SEARCH RES conn=797 op=1 msgID=2 result=12 message="" nentries=69 authzDN="uid=bnelson,ou=people,dc=example,dc=com" etime=1
The authzDN value contains the DN of the entry used for authorization purposes. This is a clear indicator that access control was based on the uid=bnelson entry and not uid=WebApp1.
Still not convinced? You can verify this by removing the rights for the uid=bnelson entry and running your search again. Add the following ACI to the top of your tree.
(targetattr="*")(version 3.0;acl " Deny Access to BNELSON"; deny (all)(userdn = "ldap:///uid=bnelson,out=people,dc=example,dc=com");)
Now run the search again. This time, you will not see any errors, but you will also not see any entries returned. While you are binding as the WebApp1 service account, for all intents and purposes, you are impersonating the uid=bnelson user when determining access rights.
Summary of Steps
The following steps should be performed when configuring OpenDJ for proxied access control.
Create the Application Account in OpenDJ (i.e. WebApp1)
- Create the Application Account in OpenDJ (i.e. WebApp1)
- Add the proxy-auth privilege to the Application Account
- Create an ACI allowing the Application Account to perform proxy operations
- Create a User Account in OpenDJ (i.e. bnelson)
- Configure ACIs for User Account as appropriate
- Test the configuration by performing a command line search using the proxied access control parameter.


text:
Elegant suit made from finest virgin wool Australian Supermerino in Super 120′ quality, black, Fabrics made in Italy.
Jacket detail:
Single-breasted, 2-button, two back vents.
Cut: SLIM cut with tight-fit silhouette and high wearer comfort, Soft-padding in shoulder and front reduce jacket weight and high-quality horsehair stabilizes its shape and form during wear.
2 front pockets, 1 breast pocket.
A naturally rounded shoulder, with a soft, very light finish.
Jacket comes with buttons made of real buffalo horn, black mottled.
A high-quality inner finish: 4 inside pockets, trimmed with outer fabric, one of them with a button (for a mobile phone).
Jacket lining is 100% viscose (made in Germany), contrasts elegantly with the outer shell fabric.
Trousers detail:
Cut: SLIM cut with the 'flat-front' design: no pleats and no turned-up cuff but with a crease, 2 French bias-cut pockets in front, 2 button-and-loop seat pockets, First-class pocket lining for more comfort, pure cotton (made in Germany), Front lining down to knee level, Waist with belt loops, inner latch with 2 hooks.
Trouser leg width at the foot size 48: 38 cm.
Care instructions: dry clean

subset: commoncrawl


text:
Daddy Daughter Dance 2011
Last weekend was the time for that uniquely suburban invention: The Daddy Daughter Dance. I like to say it's basically an hour and half of cardio in a suit.
We set up the mini studio in the house again this year and got a some fun pictures. Here's a few of my favorites:
Even Grady got gussied up for the occasion:
You can see them all here on Flickr… and last year's are here. I can't believe how much Abbey has grown.


text:
Sign Up Now! "Power Up Your English with Great Self-Study Apps + Sites" Workshop
- All News
- All Events
- Video: John Swales on Genre & English for Academic Purposes
- Video: John Levis on The Importance of Social Factors in L2 Pronunciation Learning
- Third-Annual Three-Minute Thesis Competition
- NEW! Online Pre-Arrival Course for International Graduate Students
- ELI Summer Programs Off and Running!
- Sign Up Now! "Power Up Your English with Great Self-Study Apps + Sites" Workshop
- ELI 75th Anniversary Celebration
- Registration Now Open! Winter Course for International Scholars, Researchers, Faculty, Staff, and Post-Docs
- Selma film screening and discussion
- Info Session: ELI/SLC Co-Mentoring Program
- Diane Larsen-Freeman Festschrift Published
The ELI Fall Workshop Series on English for Academic Purposes kicks off Monday, September 26, 6-8 pm, with a two-hour session led by ELI Lecturer Pamela Bogart designed to help international graduate students talk about their scholarship clearly and concisely:
Everyone needs an "elevator pitch" – that brief introduction in which you tell others who you are and what you do. When asked what you do, you need to be able to tell both experts and non-experts about your training, your research and scholarship, and why this should matter to them. Come to this workshop to learn how to effectively communicate your work and present yourself in a clear, concise, and effective way. This workshop is free to all currently enrolled U-M graduate students, but space is limited, so registration is required.


text:
To answer that query, you will need to first define what providers a journey agency gives. Any social gathering that needs to operate as a tour operator or a travel agency shall obtain a licence from the Icelandic Tourist Board for this function. Certified journey counselor (CTC): A CTC has the talents of a CTA, advanced business training and 5 years business expertise. Before you get your heart set on a selected company, speak to them about whenever you would like to travel to see if they have time to plan your journey. Well, you should have paid the company a specific amount, and possibly saved no less than that if not more.
Best for Global Vacation Network is finest for frequent travelers, similar to families or couples, searching for journey opportunities in exotic places with out sacrificing the comforts of residence. Travel company service fees: Other widespread travel company fees embrace fees for booking motels and rental vehicles and for time spent researching trips. These agencies concentrate on monitoring down offers for enterprise travelers to help corporations handle travel prices.
Some travel brokers receive certification via The Travel Institute, which confirms the agent's interpersonal skills and vacation spot knowledge. Best for SmarTours is greatest for groups needing to journey on a budget while nonetheless experiencing unique locales. Audley Travel has offered custom-made journeys primarily based on client enter since opening their doors in 1996. Everyone can write a journey article that provides details about a destination.
Seamless transfers: Making the transfer from onshore accommodations to a cruise ship can eat up nearly a whole day, but a travel agent takes care of the effort by arranging journey to the port on the proper time. The benefit of reserving a cruise with a travel company is that they'll give you a one-stop resolution to make the entire decisions regarding your cruise journey.
Financing assistance: Travel loans are available to assist younger adults begin traveling sooner than would otherwise be potential. This enhances the travel experience for shoppers by guaranteeing paperwork is so as and offering specific, often first-hand, data of the realm tourists are visiting. Quite merely, you should be capable of find an internet journey company that may fulfill any expectation you could have. These varieties of certifications make sure that vacationers are working with an agent that has the necessary experience to anticipate journey points and provide solutions.


text:
Train Geneva → Padua
Duration 6h30 - From AU$106
- Departure station : Geneve cff (Place de Cornavin 7 1201 Geneva)
- Arrival station : Padova ( Padua)
Geneva, the all-in-one destination
An all-in-one destination located at the heart of Europe, Geneva offers visitors a heady mix of unforgettable experiences set against a natural backdrop that is unrivalled worldwide. Here, it takes just one hour to travel from the banks of the largest lake in Western Europe to the foot of Mont Blanc, the highest mountain in Europe! Geneva is also home to the European headquarters of the United Nations and to more than 200 international organizations. Learn more about Geneva
Noted for academic and artistic achievement
Padua is a city of art. Donatello left a legacy of sculptures and Giotto a masterpiece fresco. Pilgrims flock to Saint Anthony's corpse in the 14th-century basilica. Padua university is one of Europe's oldest, dating back to 1222, lending the city a spirit of scholarly youthfulness. Learn more about Padua


text:
Hello and welcome to Blogmas day 3/4 , its a bit late but here none the less , all best intentions were lost as I've been struck with the dreaded lurgy.
I hope you are getting into the Christmas spirit? A grotto visit has got mini me super excited and we still have 3 weeks left- wish me luck.
Anyway today I thought I'd share my thoughts on this new find from Tesco. Free From Fondant Truffles, they are a mouthful to say, and a mouthful to eat. Anyway the bonus is they are wheat, gluten, egg and milk free. ( I'm waiting for confirmation of nuts).
So how do they taste? The thick chocolate outer is a pleasant milk chocolate, that doesn't have that cheap Artificial sweetness to it, however the soft fondant centre is very very sweet. If I'm honest they are not for me but then I do prefer dark chocolate. For me they sit well with a coffee after dinner ( which I assume is their intent). What is brilliant though is that there is a grown up, affordable (£2.00) dairy free truffle on the market now.
Have you tried these? Let me know your thoughts in the comments below.


text:
Presented by Summit Financial Corporation
U.S. markets continue their rise
June was another strong month for U.S. equity markets, as the S&P 500 Index rose 2.07 percent and the Nasdaq climbed an even stronger 3.90 percent. The Dow Jones Industrial Average was the laggard of the group, with a gain of just 0.75 percent. Markets continued to hit new records throughout the month.
For the quarter, results were even stronger, with the S&P 500 up 5.23 percent, the Nasdaq up 4.98 percent, and the Dow again bringing up the rear with a gain of 2.83 percent. Both the Dow and the S&P 500 have shown steady gains since the pullback in April, while the Nasdaq has made most of its gains in the past six weeks or so.
Market gains were driven by continued earnings growth, with an estimate for second-quarter growth of 5.1 percent, per FactSet. Despite the large number of negative preannouncements, the actual downward revisions to estimates were the lowest since the start of 2011, which was considered a positive factor. Interestingly, the indices increased even as earnings estimates declined—which has been the norm recently but can be considered a cautionary sign for the future.
Technicals remained strong, with all three major U.S. indices well above their moving averages. With the averages at record highs, there are no resistance levels above them to impede further advances, while lower levels can be expected to potentially act as support.
Developed international markets were up for both the month and the quarter, with the MSCI EAFE Index up 0.96 percent for June and 4.09 percent for the quarter. The relatively strong results came despite elections for the European Parliament that were described as a political earthquake (winners included a large Eurosceptic component), as well as the continued disappointing economic results in major European countries. In fact, to encourage growth, the European Central Bank (ECB) again cut rates and imposed negative interest rates on banks in an attempt to spur lending.
Emerging markets, as represented by the MSCI Emerging Market Index, had an even stronger quarter, gaining 6.60 percent. This was capped by a 2.66-percent gain in June. These positive results represent a recovery from the weakness of the first quarter, as emerging economies have shown continued signs of strength despite the Federal Reserve's continuing exit from its stimulus program. Technical signs for emerging markets are positive and improving.
Fixed income was once again an interesting asset class for the quarter, with the 10-year Treasury rate defying analyst expectations and declining over the quarter, from a high of more than 2.80 percent in early April to a value of 2.53 percent at the end of June, with significant volatility during the period. (The Barclays Capital Aggregate Bond Index showed gains of 0.05 percent for June and 2.04 percent for the quarter, which marks the first time since 2012 that bonds have logged two consecutive quarters of price increases in the U.S.) The decline in rates in the U.S. was echoed by similar declines around the world, with yields in Europe falling after the ECB lowered interest rates in its bid to foster growth.
U.S. economic recovery continues despite rough first quarter
The economic surprise of the month and the quarter was the unexpectedly low final result for first-quarter gross domestic product (GDP) growth, which was revised down to a decline of 2.9 percent from a previous estimate of minus 1 percent. Although the first quarter's weakness was well known, the magnitude of the downward revision called into question whether the recovery was faltering; the consensus, however, is that it continues and is accelerating.
The disappointing first-quarter results were largely due to weather, which was known, but also to revisions in health care spending, which was expected to increase but in fact decreased (see chart). The change appears to be due to problems with the data created by the start of the Affordable Care Act. Although we can expect larger-than-usual revisions while the implementation of Obamacare continues, the vast majority of the data for the U.S. supports an accelerating recovery.
Much of the U.S. economic data, in fact, is at multiyear highs stemming from before the financial crisis, especially in the areas of employment. For the first time since 1999, we recently had four straight months of job growth of more than 200,000, and right now the number of unemployed people per job opening is at the lowest level since May 2008. Wages and income are growing at an increasing rate while hours worked remain at the highest level since August 2008. Current data says that the recovery continues and is increasingly benefiting the average worker.
International risks move back to the forefront
Even though the revision of the U.S. GDP number grabbed headlines, markets largely shrugged it off. The real risks for the quarter were international. As previously noted, elections for the European Parliament, held at the end of May, saw anti-establishment parties gaining more representation than ever before in countries such as England and France. These results were driven largely by continued slow growth and high unemployment in the region, which, as noted, forced further action by the ECB.
Even more worrying than the European elections was the deteriorating security situation in Iraq, where Islamist militias had taken over large parts of the country. Oil prices rose accordingly in the quarter, although not as much as had been expected. While the situation remained threatening at quarter-end, oil prices had started to edge back down. A potential spike in oil prices remains the most direct economic risk to the U.S. recovery, and, should the situation in Iraq worsen, that remains a possibility.
China also remained in the headlines, as conflicts in surrounding seas continued. Both Vietnam and the Philippines pressed claims against Chinese encroachment, even as China actually started to build islands in the disputed areas to strengthen its claims. Finally, the situation in Ukraine seemed somewhat calmer but continued to simmer.
Strong market should not breed complacency
The strong results from equity markets over the quarter have been encouraging. Investors have rightly cheered their gains and, at least in the U.S., have also benefited from a strengthening recovery. But the time for caution is just when things look best. Market volatility has declined to very low levels, which historically has signaled storms ahead. The international scene remains turbulent, especially in the oil-producing states of the Middle East, and the potential for disruption there remains.
Although we see no signs of immediate concern, we are aware that the current positive conditions are very likely to change at some point, with a consequent negative reaction in the financial markets. This is certainly worrying, but such a correction would be normal in the greater scheme of things. We remain confident in the U.S. economy and in our excellent positioning in the world, as well as in the strength of our financial markets. We believe that a well-diversified portfolio, rebalanced regularly, is still the best way to meet financial goals over time and should be maintained through good times and bad.
All information according to Bloomberg, unless stated otherwise.
Disclosure: Certain sections of this commentary contain forward-looking statements that are based on our reasonable expectations, estimates, projections, and assumptions. Forward-looking statements are not guarantees of future performance and involve certain risks and uncertainties, which are difficult to predict. Past performance is not indicative of future results. Diversification does not assure a profit or protect against loss in declining markets. All indices are unmanaged and investors cannot invest directly into an index. The S&P 500 Index is a broad-based measurement of changes in stock market conditions based on the average performance of 500 widely held common stocks. The Nasdaq Composite Index measures the performance of all issues listed in the Nasdaq Stock Market, except for rights, warrants, units, and convertible debentures. The Dow Jones Industrial Average is a price-weighted average of 30 actively traded blue-chip stocks. The MSCI EAFE Index is a float-adjusted market capitalization index designed to measure developed market equity performance, excluding the U.S. and Canada. The MSCI Emerging Markets Index is a market capitalization-weighted index composed of companies representative of the market structure of 26 emerging market countries in Europe, Latin America, and the Pacific Basin. It excludes closed markets and those shares in otherwise free markets that are not purchasable by foreigners. The Barclays Capital Aggregate Bond Index is an unmanaged market value-weighted index representing securities that are SEC-registered, taxable, and dollar-denominated. It covers the U.S. investment-grade fixed-rate bond market, with index components for a combination of the Barclays Capital government and corporate securities, mortgage-backed pass-through securities, and asset-backed securities.
Summit Financial Corporation
7 New England Executive Park
Suite 220
Burlington, MA 01803
Tel: (781) 229-9500
Fax: (781) 229-2700
Authored by Brad McMillan, vice president, chief investment officer, at Commonwealth Financial Network.
© 2014 Commonwealth Financial Network®


text:
Leftover season is almost upon us. Time to think about what to do with all the extra turkey. It's also time for some quick and easy meals after a long day of shopping, or decorating for Christmas. I put this basket together as an easy meal idea, or a way to deal with leftovers. The basket can also be given as a hostess gift. This is another basket for my RWA literacy event. It was inspired by this post for a Gourmet Halloween Boo Basket http://www.attagirlsays.com/2015/10/19/baked-brie-recipe/
The basket includes
Marie Callender's Biscuit Mix
3 Bean Chili Mix
McCormick Chili Sauce
Old Mansion Chili Mix
I also included a cute turkey gift bag to make it more festive, and a book so the cook can take some time off to rest and relax after a busy day. You can do the same with one of my books www.Georgie-Lee,com
5 comments:
- Mommy's Little Princesses said...
How nice I especially like the sound of the chilli sauce.xx #KCACOLS
- November 12, 2015 at 5:20 AM
- Maria said...
This is a lovely idea for a hamper and very thoughtful to add in a book so the cook can relax afterwards!
Thanks so much for linking up at #KCACOLS. Hope you come back again next Sunday! x
- November 13, 2015 at 1:38 PM
- Lori @Frog's Lilypad said...
This is a very nice idea. I've never even considered a "leftover" gift basket.Thank you for linking up with Thankful Thursdays.
- November 14, 2015 at 7:11 PM
- daydreaming beauty said...
What a nice gift idea! I've never tried chili with leftover turkey, but it sounds like a good option!
- November 15, 2015 at 5:52 PM
- Unknown said...
What a cute idea and so perfect for fall! Thanks so much for sharing at Share The Wealth Sunday!
- November 18, 2015 at 1:33 PM
Subscribe to: Post Comments (Atom)


text:
October's PlayStation Plus lineup is a bit of a range. Friday the 13th is good for some co-op scares, and there's also some indie gems in The Bridge and Read Only Memories. As always, these games are only "free" if you have an active PlayStation Plus subscription.
October's PS Plus games are:
PlayStation 4
- Friday the 13th: The Game
- Laser League
PlayStation 3
- Master Reboot
- The Bridge (crossbuy with PS4 and Vita)
PlayStation Vita (crossbuy with PS4)
- Rocketbirds 2: Evolution
- 2064 Read Only Memories


text:
Personalized Sports Through a Streaming Future
Get drunk & save the planet - the promise of a connected world
2016: The Year of Acceptance
Boom Beach Takes All In Vegas
Discovering Music All Over Again
Star Wars: Another Powerful Shift in the Force at Hand?
Smart Speakers: About More Than Just Music
2015 has been another banner year for the audio market. While sales of stereo headphones and soundbars have grown 18 percent and 13 percent, respectively, according to The NPD Group's Retail Tracking Service, so too have wireless speakers. In fact, the wireless speaker market figures to eclipse $1.5 billion in volume by the end of this year as an array of pricepoints, features, and form factors offer consumers plenty of choice in the market. There are also options for consumers when it comes to how their speaker connects with an audio source.
Drop Dead Fitness
The checkup started really well. Blood pressure was right on track, blood oxygen was apparently great and my heart rate was, as usual, as slow as an athlete's. There was just one problem: I'm not much of an athlete. Not that I'm unhealthy: I windsurf when the weather is warm and windy, and get out on a bicycle every now and then. Heck, I've even been known to break into a gentle run on special occasions. But I'm not deluded enough to think I'm in top shape.


text:
With iFiles application you can save, share, view and manage files on your iPhone or iPad.
- Ability to connect to iFiles from any Mac or PC.
- Ability to share your files with friends via WI-FI or Bluetooth.
- Ability to save info.
File formats:
- iWorks;
- Microsoft Office (Word, Excel, PowerPoint).
- HTML web pages and network files (web pages downloaded Safari)
- Documents PDF.
- RTF and RTFD.
- Plain text with auto-detection coding. Text files can also be edited.
- Video files ( supported files iPhone: MP4, MOV, MPV, 3GP, M4V)
Polaris Office app is a mobile office soft which allows users to view or edit MS Office documents on the iPhone/iPad.
- View and edit MS Office documents
- View Pdf and Hwp files
- Interoperability with cloud storage services (Google Docs, Dropbox, Box.net, other services will be available later)
- 15 patterns
- 18 2D/3D charts
- 80 pieces
- More than 300 functions
- Camera mode, which allows photos to be directly attached to the documents
- Direct opening zip files
- Slideshow Mode
- Effects of rotation for slideshow
- Fast loading documents
iTeleport: VNC & RDP app allows you to control your Mac or Windows PC remotely and from anywhere in the world.
- Control any application on your Mac or Windows PC desktop;
- Visit Flash-sites with your iPhone and iPad (video/audio streaming is not supported);
- Access your files from anywhere;
- View your PowerPoint slides;
- Manage media player where you like;
- Use your iPhone as a touchpad, wireless keyboard, multimedia remote control;
- Parents can monitor online their child, to make sure he's safe;
- Supports Ctrl-Alt-Del and other key combinations;
ExcelContacts app is the only possible way to transfer your contacts from or to your iPhone without the help of iTunes.
- Easy to manage your iPhone;
- Update, modify and maintain your contacts on your PC using Excel, OpenOffice or other software that supports Excel;
- Send all the contacts from your iPhone in a convenient zip file via e-mail, mail, via USB, or via a web page visible only to your local network;
- Do not rely on iTunes;
- Store contacts on Yahoo or other servers (backup);
- Protects you from some incidents;
- Restore or edit contacts in the table;
ExcelContacts app is the best and the only possible way to transfer your contacts from your iPhone without the help of iTunes!
- Easy control your contacts;
- Update, modify and maintain your contacts;
- Use Excel, OpenOffice or any other programs that supports Excel;
- Send all contacts from your iPhone in zip file via e-mail, USB, or through the web;
- Store contacts on Yahoo or other servers (as back up);
- Protect you from some incidents in sync with iTunes;
- Repair or edit contacts;
- print the contacts;
- Export contacts file in Excel;
File Manager Pro App is the best program for downloading, organizing, and viewing all of your files on your iPhone or iPad.
- Icloud, Google Drive, Dropbox, SkyDrive;
- Wi-Fi Connect;
- Download manager;
- Possibility to create new folders;
- Copy and move documents;
- Open files in other apps;
- Print documents;
- Rename files;
- Zip and Rar;
- Powerpoint, Excel, Word, PDFs support;
- Keynote;
- View images, Web Files, and video files.
Language: English.
Requirements: iOS 5.0 +; 480x320, 960x640, 1136x640, 1024x768, 2048x1536.
TinyScan Pro app is a program that can turn your iOS device into a full-fledged mini-scanner for documents, pictures, receipts and other texts.
- Simply photograph the document and press the scan button;
- Automatically crop the edges;
- A mini scanner;
- Documents, pictures, receipts and other texts;
- Scan anywhere and store or send via e-mail as a PDF files.
Language: English.
Requirements: iOS 5.0; 480x320, 960x640, 1136x640, 1024x768, 2048x1536.
Calendars by Readdle app is an excellent and easy to use Google Calendar client for iPhone and iPad, which has a number of useful features.
- Drag & Drop support;
- Add events with a click;
- Switch between days;
- Manage your calendar online and offline;
- Ability to add members to new and existing events;
- SMS-reminder;
- Search options;
- Fast app performance;
- Nice and easy interface.
What's new in version 3.5.2:
- Improved stability;
- Various bug fixes.
Language: English.
iTeleport: VNC & RDP app allows you to manage your Mac or Windows PC remotely and absolutely anywhere in the world.
- Control any app on your desktop Mac'a or Windows PC;
- Visit the Flash-sites with its iPhone and iPad;
- Access to files in your PC from anywhere;
- See your PowerPoint slides;
- Manage the media player where you like;
- Use the iPhone as a touchpad, wireless keyboard, multimedia remote control;
- Parents can monitor online behavior for your child to make sure he's safe;
- Support for Ctrl-Alt-Del and other key combinations;
DataMan Next: Track Data Usage In Real-Time program is the app that can monitor all communication costs and not to leave the limits of the tariff plan.
- Calculation of traffic LTE/3G and Wi-Fi;
- 4 thresholds for the warning;
- Detailed statistics;
- The app works with all operators;
- Quick and easy to use.
Language: English.
Requirements: iOS 6.0 or above;
Supported resolutions: 480x320, 960x640, 1136x640.
iPhone Wallpapers
Iphone forum
iPhone 5 Wallpapers


text:
In case you weren't aware, this December is the 50th anniversary for the debut of the oh-so-popular, ten-million-award-winning, insert-professional-sounding-praises film My Fair Lady. (If you don't want to do the math-- and if you're anything like me, you don't-- that puts us back to 1964.)
|At the premiere
Well, a certain best friend and I decided we couldn't let it pass completely without doing something. (It just happens to kind of be our special musical, so, you know.)


text:
As the leader in the hearing health devices market, e3 Diagnostics provides a robust selection of hearing aid test systems. Whether you need a device to perform real ear measurements, hearing instrument tests, speech mapping, or all of the above, we have a solution for your unique needs.
With a wide range of features for verifying hearing aids, the Interacoustics Affinity 2.0/REM440 is an ideal choice for any hearing aid dispensary.
The REM440 module can be complimented by the VSP440 module to help present REM measurements in ways that reinforce what the client is experiencing, and form the basis for a discussion of issues like binaural aids and non-linear compression.
We understand that you have a choice when it comes to choosing your equipment and are dedicated to providing you with the highest quality instrumentation available.Contact us now for your free, no obligation quote and discover why we are the preferred Authorized Distributor and Service Provider to the world's leading manufacturers. (Completing our online form does not sign you up for electronic advertising.)
Request Quote
(800) 323-4371
MON - FRI: 8am-5pm CST
Find Local Office
Browse our audiology supplies web shop today and stock up on products from the industry's best brands!
© 2013-2019 e3 Diagnostics. All Rights Reserved.
firstname.lastname@example.com | Privacy Policy | Terms of Use | 3333 N Kennicott Ave., Arlington Heights, IL. 60004


text:
Simplest Way To Improve Your Composition Skills In Photography
Although it may sound a bit far fledged but the rule of thirds in digital photography (also known as the divine proportion) is actually derived from the Fibonacci sequence of numbers. Thanks to the best selling book by Dan Brown we all know what that sequence is and who derived it. That's right, Leonardo Da Vinci; who some say was the smartest man who ever lived. So what is the rule of thirds and how it works; and most importantly can we break the rule and still shoot great photos? Let's find out.
What is Rule Of Thirds?
The rule of thirds is simple to describe but is not simple to comprehend why it works. Imagine that your view through the viewfinder is divided by four intersecting lines, two horizontally and two vertically.
The result is that the view is divided into 9 equal rectangles with four points where the lines intersect. Imagine the grid lines of tic-tac-toe and you will get the picture. Right, we are all set. Each intersecting point is also known as the power point (some also refer it as the sweet spot). For some reason the human eye always kind of gets attracted by these imaginary intersecting points. Anything important on or around these power points make the photo look perfect and in balance. This is the part which is difficult to comprehend. Why the human eye does always focuses on the power points? It is hard to imagine why so let's just accept it as a basic fundamental of a well balanced photograph.
How to apply Rule Of Thirds in Photography?
There are three easy ways to apply or playing with rule of thirds. Actually they are quite simple & easy to master. They are: The Horizontal lines, Vertical Lines & Power points.
The Horizon
Let's start with placing the horizon, specially if you shooting landscape. The secret is, if you want to emphasize the foreground place your horizon close to the top horizontal line.
This way, the photograph is more balanced because there is enough solid ground in the entirety of the scene without overwhelming the lightness of the sky or the horizon. Same way when the horizon is placed below the second horizontal line, it emphasizes the background (for example sky), there is slightly more sky showing, but the effect is still almost the same.
Vertical lines
Dont forget the vertical lines as well. Simply placing the main subject close to any one of the vertical lines may help you to balance the frame & negative space.
The Power Points
The next point is, the key elements of a photograph should be place on or around these four power points. This automatically balances the photograph and makes it more pleasing to the eye. Let's take an example. Most amateur photographers have an idea that to shoot a perfect portrait the subject must be positioned bang in the middle.
Well sometimes it works, but sometimes, if you can simply put the main elements such as one of the eyes of the subject or may be something such as the setting sun in the horizon (for a landscape shot) on one of the power points the photograph looks a lot better.
Try this, it works!
Just that, you feel this is worth the while and going to seriously affect your compositions, here is a small background. Even before photographers figured this out, artists, sculptures and painters have been using this for hundreds and thousands of years. So this is something that has been well tried and tested and if you can believe me it really works.
Breaking the Rule Of Thirds
So is the rule of thirds the defining rule of photographic compositions and anything and everything shot with a lens and a roll of film or a sensor must follow this? Not quite. While it does make a more dramatic effect, there are plenty of situations where the rule of thirds don't apply or simply won't work. Say when shooting a fast action photo which catches a moment in time and freezes it. The absorbing moment in itself is a source of pleasure. Of course in such circumstances it is impossible to actually follow the rule of thirds (and glad that it is so). Another example is when you want to shoot motion blur. Photographers who understand the rule of thirds never shy away from breaking it in order to shoot more intriguing pictures. In photography at least, nothing is laid down in stone and experimentation is what keeps things interesting.
Related Post: 1. Exposure Triangle 2. Depth of Field


text:
LISTEN TO NEW MUSIC! Singer/Songwriter Kathleen Potton Releases New Album "NERO"
Available Now: Vocalist/Singer-Songwriter Kathleen Potton
Reveals A Personal Travelogue of Her Musical Journey on Debut Album, NERO
Fuses Artful Pop, R&B and Jazz, While Paying Tribute to Female Songwriters
Though the title of her debut album, NERO, is a winking homage to the influential Laura Nyro, Australian-born singer-songwriter Kathleen Potton isn't interested in simply paying tribute. Instead, Potton has imbibed the lessons of Nyro, Joni Mitchell, Kate Bush and other singular female songwriters both musically and in the distinctive paths they have cleared through diverse genres, and created a compelling, revealingly personal travelogue of her own journey in music.
NERO comes at the dawn of a promising career. It is a summation of Potton's experiences to date, as her pursuit of her muse has led her on an unlikely trek from the New South Wales countryside to Singapore and finally New York City, where she has emerged as an exciting voice melding influences of artful pop, jazz and R&B into an absorbing blend that is as inviting as it is uncategorizable.
To craft the captivating sound of the album, Potton worked closely with producer and bass/guitar virtuoso Alan Hampton. "It was very humbling to work with Alan," she says. "I've always been a massive fan of his and put him on a bit of a pedestal, but he had a very calming and encouraging approach in the studio. He makes musical suggestions in a way that makes you feel supported, and his playing is not aggressive but it's powerful; it's subtle but it has a wonderful way of creating movement in the music and allowing it to grow."
Hampton was instrumental in assembling the gifted and expressive band for the recording, which features pianist Frank Locastro and drummer Bill Campbell, along with Potton's fellow Aussie, guitarist Ben Eunson. "I'm so excited about this record," Hampton says. "Kathleen's writing is as intuitive as it is imaginative, never shying away from complexity, nor relying upon it for interest. Her vocal performances on this record are graceful and understated, allowing the songs to speak for themselves without tricks or flash."
Potton's evocative lyrical imagery poetically conjure moments in history, but at the same time muse on the elusiveness of the passage of time and the intangibility of memory. "I've been traveling from one home to another for several years now," says Potton, "and there's a part of me that wishes I'd savored these times a lot more. There's a sense in a lot of the songs on the album of not being still, a restlessness and not wanting to be present in the moment."
Photo Credit: Leonardo Mascaro
Potton has lived through a particularly unique set of moments on her way to recording NERO. She grew up in the small Australian town of Tamworth, known as the "Nashville of Australia" for the popularity of country music there. At home, she lived with her parents' eclectic tastes: her mother listened to classical music and swing-era jazz, while her father was a fan of classic rock and folk by the likes of The Beatles, Bob Dylan and Leonard Cohen.
Having studied classical piano and voice since childhood, Potton then set out for Sydney to pursue a classical music degree. That plan was derailed after a year when she dropped out, overwhelmed by the scale of musical talent in the metropolis. "Once I got to Sydney I realized there was a lot more to the music world than I knew," she explains, "and I wasn't prepared to take it on just yet."
Her passion for music never fully ebbed, however, and Potton continued to take singing lessons. Almost on a lark, at the suggestion of her vocal instructor she applied and was granted a scholarship to the then–new jazz program at Singapore's LASALLE College of the Arts, headed by Australian saxophonist Tim O'Dwyer–no doubt an unlikely locale in which to launch a jazz career.
"I wanted to try something new," Potton explains. "I felt like I needed a bit of a shock to the system. And I'm really glad that I went. There are things that I got out of it that I wouldn't have gotten from other places."
While there, as part of a classroom assignment, Potton tried her hand at songwriting for the first time and found a natural talent for vividly capturing her emotions through song. NERO marks the first time she's sharing those songs with a wider audience, collecting pieces written through her experiences in Asia and upon arriving on the thriving New York City jazz scene, where she earned a Master of arts in Jazz Performance from the Aaron Copeland School of Music at Queens College.
Kathleen Potton · NERO
Release Date: May 19, 2017
For more information on Kathleen Potton, please visit: KathleenPotton.com
DL Media


text:
Smartwork5 is an online, self-graded homework system that provides students with interactive, engaging content. Smartwork5 works on computers and tablets, and integrates with the Norton Ebook Reader and other Digital Toolkit products. This page provides details on how to access Smartwork5, and how to join your instructor's Student Set.
Accessing Smartwork5
You can access Smartwork5 one of two ways:
- Through the Norton Digital Landing Page
- Through your campus Learning Management System (such as Blackboard, Moodle, Canvas, etc.)
Your instructor will give you instructions on how your class is expected to access Smartwork5.
If your instructor wants you to access Smartwork5 through your campus Learning Management System, only access and complete assignments via the links your instructor gives you. This will ensure that your instructor receives your grades.
Registering for Smartwork5
When you first log in to Smartwork5, either through the Norton Digital Landing Page or your campus LMS, you will be prompted to register for Smartwork5.
To register for Smartwork5, do the following:
- Click on "Sign in or Register" in the top right corner of the Digital Landing Page to open up a pop-up window prompting you sign in or register for Smartwork5. If you are accessing Smartwork5 via your campus Learning Management System, this window will appear when you click on your first assignment.
- Select "No, I need to register, purchase, or sign up for trial access." Click the green button to continue.
- Fill out the form with your full name, your school email address and your password. DO NOT register for Smartwork5 with a personal email address. Doing so will make it difficult for your instructor to track your grades. Please use the email address issued to you by your school, if you have one. Once you have set up your account, you will not be able to transfer any of your work (completed or in-process) or grades within Smartwork5 to an account set up with a different email address.
- Determine how you would like to access Smartwork5.
- If you have a registration code, select "I have a registration code" and enter it into the text field. Then, click "Register My Code."
- If you want to purchase access, select "I want to purchase access." Then, click the "Show Purchasing Options" button.
- If you do not want to purchase access and do not have a registration code, select "I want to sign up for free trial access." Then click "Sign Up for Trial Access." If you select this, you will have the opportunity to enter in a registration code at a later date. Trial access lasts three weeks. (Note: there is no trial access available for astronomy courses.)
- Follow the prompts for agreeing to the terms of service.
- If you are registering via the Norton Digital Landing Page, follow the prompts for entering in your country, state or province, and school. If you are accessing Smartwork5 via your campus Learning Management System, this information will already be in the system.
- Access your assignments.
Adding Yourself to a Student Set
Your instructor's Smartwork5 section is called a Student Set. Student Sets allow your instructor to track your progress in Smartwork5.
If you are accessing Smartwork5 via your campus's Learning Management System (such as Blackboard, Moodle, Canvas, etc.), you will automatically join your instructor's Student Set when you first log in. If you are accessing Smartwork5 via the Norton Digital Landing Page, you will have to enter in the Student Set ID that your instructor provides to you.
To add yourself to a Student Set, do the following:
- Log into Smartwork5.
- Click on the gear menu in the upper-right corner of your screen.
- In the dropdown menu, select "Add Yourself to a Student Set."
- In the pop-up window, enter in the five-digit Student Set ID number provided to you by your instructor.
- Click "OK" to add yourself to the Student Set.
- Syncing your Grades in Smartwork5 - One link in your school's Learning Management System
- Syncing your Grades in Smartwork 5 - Multiple links in your school's Learning Management System
Frequently Asked Questions
How do I check that I joined the correct Student Set?
If you have already joined a Student Set and you would like to confirm which Student Set you joined, click on the gear icon in the upper-right corner and select "Add Yourself to a Student Set" from the menu.
Any Student Sets of which you are currently are a member will displayed near the top of the window.
What if I accidentally enrolled in the wrong student set?
If you enrolled in the wrong Student Set, enroll in the correct one and notify your instructor of the mistake. Your instructor can then remove you from the incorrect Student Set.
If you joined a Student Set that is not accessible to your instructor, please contact W. W. Norton Customer Support to be removed from the incorrect Student Set.
You can add yourself to as many Student Sets as you would like. However, you cannot remove yourself from a Student Set; only your instructor can perform that action.
What if my instructor doesn't give me a Student Set ID?
This is due to the fact that Smartwork5 is integrated with your campus Learning Management System (Blackboard, Moodle, etc.). In this case, you don't need a Student Set ID; your grades will automatically report to your instructor.
How do I change the email address I use to access Smartwork5?
If you registered or purchased access to Smartwork5 and you used the wrong email address, click on the "Need to change your email?" link found on the sign-in window.
Provide the required information on the "Change Your Registered Email Address" window and click the "Submit" button.
Please note, you can update your email address any time within 14 days of creating your account. After 14 days, please contact W. W. Norton Customer Support for assistance.
What devices and browsers are best for accessing Smartwork5?
Smartwork5 works on desktop and laptop computers and tablets. Smartwork5 is not supported on smartphones.
Smartwork5 is compatible with the following OS and Browsers:
- Chrome version 39 or higher
- Firefox version 40 or higher
- Safari version 9 or higher
- Internet Explorer version 10 or higher
- Opera 39 or higher
Tablet Android:
- Mozilla Firefox (Firefox 40 or higher)
- Google Chrome (Chrome 39)
Do you know your Operating system version? Here's how to find it: Mac /Windows
Is there someone I can contact for further assistance?
If you need further assistance with Smartwork5, contact W. W. Norton Customer Support.
Please provide us with the following information:
- Your school
- Your instructor's name
- Your section name
- Your Student Set ID number, if you have one
Live chat representatives may be available during the hours listed below. In the event no representatives are available, requests will be handled via email.
- Monday–Saturday: 10:00am–10:00pm, US Eastern Time
- Sunday: Noon–Midnight, US Eastern Time
Submit a Support Request
Still need help? Submit a support ticket and a customer support specialist will be happy to assist you.
Opened a request already? Click here for an update.