“Bootstrapping” um swf remoto para o aplicativo SecurityDomain (ActionScript3)
-
03-07-2019 - |
Pergunta
aplicativo My Flash (AS3 / AIR) está usando uma arquitetura um pouco incomum (para um aplicativo Flash) para fornecer determinadas classes base para conteúdo carregado em tempo de execução. O conteúdo externo é publicado com as classes 'rascunho' de base, que são eclipsada pelas classes de base 'reais' em tempo de execução quando é carregado. Eu já ouvi essa referido pela Adobe como bootstrap ( pdf ), e ele tem trabalhado muito bem para mim até agora. Não é diferente de uma arquitetura de DLL creio eu, embora eu não sou qualificado para dizer com certeza.
Até agora, o conteúdo externo eu tenho sido de carga foi carregado dentro do mesmo SecurityDomain
(mesmo sandbox), o que me permite carregar facilmente o conteúdo em um ApplicationDomain
criança. Infelizmente, tanto quanto eu posso dizer, um ApplicationDomain
s que SecurityDomain
s extensão não podem ser relacionados -. Que é, eu não posso fazer uma AppDom de um SecurityDom a criança de um AppDom de outro SecurityDom
Mas agora eu preciso carregar este conteúdo externo a partir de fora da minha sandbox do aplicativo. Há muitas maneiras de conseguir uma comunicação através SecurityDomain
s - embora a maioria deles são muito limitados, sandboxBridge
API do AIR é provavelmente o mais poderoso. Infelizmente, nenhum destes métodos de comunicação permitem-me para alcançar essa arquitetura bootstrapping.
Eu noto que o objeto LoaderContext
tem uma propriedade securityDomain
, mas a segurança do Flash proíbe 'swfs locais' de tocá-lo (ele lança um SecurityError
ou similar).
SWFLoader
do Flex tem uma propriedade trustContent
que parece promissor, mas eu estou inclinado a supor que ele tem as mesmas restrições que definir o SecurityDomain
em Loader
do LoaderContext
.
Eu suspeito que vou ter que redesenhar (que não será fácil), mas eu pensei que eu tinha acabado de verificar aqui que eu não perdi alguma coisa na minha pesquisa.
Então ... quaisquer ideias ou pérolas de sabedoria? Eu especialmente em pânico amor que se alguém da Adobe que trabalha no modelo de segurança poderia me dê um direito "sim / não pode / não pode ser feito" ...
Agradecemos antecipadamente!
Adenda: Eu já decidiu re-projetar a arquitetura para que o bootstrapping tudo acontece no domínio externo. A minha pergunta ainda permanece, no entanto, por curiosidade.
Solução 2
No momento da escrita, eu determinei que você não pode carregar um ApplicationDomain
em seu próprio SecurityDomain
se for de outro domínio, mesmo com o ar.
Por design, eu acho.
Outras dicas
Tecnicamente falando, não seria possível para o seu aplicativo AIR para simplesmente salvar os SWFs externos dentro do seu diretório de aplicativos, e carregá-los de lá para que eles vivem na mesma sandbox de segurança?
No entanto, existem algumas razões muito óbvias porque esta seria mau Karma, então parece que qualquer solução levanta necessariamente a questão de se tentar colocar o conteúdo do aplicativo local e remoto de conteúdo não confiável para o mesmo domínio de aplicativo é a abordagem de arquitetura direito ..?